【发布时间】:2021-06-02 14:22:43
【问题描述】:
我想读取图像文件 (6477 X 6840) 像素并在 Y 中复制 2 次,在 X 中复制 8 次。 尝试了很多程序,但是耗时太长了。
public static void FillPattern(Graphics g, Image image, Rectangle rect)
{
Rectangle imageRect;
Rectangle drawRect;
for (int x = rect.X; x < rect.Right; x += image.Width)
{
for (int y = rect.Y; y < rect.Bottom; y += image.Height)
{
drawRect = new Rectangle(x, y, Math.Min(image.Width, rect.Right - x),
Math.Min(image.Height, rect.Bottom - y));
imageRect = new Rectangle(0, 0, drawRect.Width, drawRect.Height);
g.DrawImage(image, drawRect, imageRect, GraphicsUnit.Pixel);
}
}
}
【问题讨论】:
-
它的代码很简单,但对于 1000x1000 像素的文件需要将近 15 分钟。
-
你想达到什么目的?你能想象你的应用必须渲染多少像素吗?即使使用 Paint 或 Photoshop 打开此类文件,对于性能较弱的 PC 来说也可能是个问题。
-
@BorisSokolov 这是用于打印应用程序文件。打印尺寸约为 1208mmX3200mm,分辨率为 720 dpi,我们目前正在实现 2 个阶段,翻录和打印。我想设计一个可以直接打印的软件。
-
嗯...在这种情况下,我宁愿使用某种专门的软件(Photoshop 等)。我不认为使用图形库实现合理的性能是不现实的跨度>