C#图形计算图像并保存
本文关键字:保存 图像 计算 图形 | 更新日期: 2023-09-27 18:00:28
我看到,绘制两个图像很耗时,所以我想尽可能减少绘制这些图像。我使用pictureedit并已覆盖ondraw事件。在这里我添加了下面的部分,但它最终变成了一个黑色的图像。我确实想检查一下,是否需要画画。这个检查有效。然后我画出背景,用另一个覆盖它,我想把它存储为图像,并把它作为我的控制的背景。
如果我不重新绘制背景,我只调用:
g.Clear(Color.Transparent);
在我的图片中编辑绘画事件。
我做错什么了吗?
谨致问候,
Patrick
//Recalculate the background
if (redrawBackground)
{
g.FillRectangle(Brushes.White, 0, 0, backGroundImage.Width, backGroundImage.Height);
g.Clear(Color.White);
//this is drawn without aspect ration. The matrix is stored, since drawing images is expensive
GenerateTransformation(g, false);
g.DrawImageUnscaled(backGroundImage, new Rectangle(0, 0, backGroundImage.Width, backGroundImage.Height));
lastTransformation = g.Transform;
GenerateTransformation(g, true);
g.DrawImage(foreGroundImage, new Rectangle(0, 0, backGroundImage.Width, backGroundImage.Height));
lastTransformationAspect = g.Transform;
//Save bitmap as background
Bitmap bmp = new Bitmap(backGroundImage.Width, backGroundImage.Height, e.Graphics);
//Trick the background by a new image
pictureEdit.Image = bmp;
}
您的代码(new Bitmap(backGroundImage.Width, backGroundImage.Height, e.Graphics);
)不会将图像复制到位图;它只将Graphics对象与位图相关联。
试试这个:
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.DrawSomething(); // This draws to the bitmap