我有一个List<> object,“imagelist”,包含许多图像的路径,例如.png。现在,使用以下代码:
private void paint_picture(PictureBox picture, string pathofpic)
{
Graphics g = picture.CreateGraphics();
Bitmap drawnpic = null;
if (imagelist.ContainsKey(picture.Name))
{
drawnpic = new Bitmap(pathofpic);
g.DrawImage(drawnpic, 0, 0, picture.Size.Width, picture.Size.Height);
imagelist[picture.Name] = pathofpic;
}
drawnpic.Dispose();
g.Dispose();
}
每次更改卡片的图像时我都会调用它,但是当我将图片框拖到窗体上时(例如,在其他图片框上),我似乎无法使图像保持在图片框上。点击和拖动代码只是用鼠标移动图片框,而不是真正相关。
我在取消选择图片时尝试使表单无效,但它没有做任何事情。
有什么我想念的吗?下面的屏幕截图,我在表单周围拖了一个图像,它覆盖了它移动的其他图像:
答案 0 :(得分:3)
这就是绘画的工作原理 - 你必须处理它的Paint
事件,并在每次需要重新绘制时继续绘画。
您可以做的是在原始图像上绘制:
Bitmap b = new Bitmap(picture.Image);
using (Graphics g = Graphics.FromImage(b)) {
using (Bitmap drawnpic = new Bitmap(pathofpic)) {
g.DrawImage(drawnpic, 0, 0, b.Width, b.Height);
}
}
picture.Image = b;
然后您将原始图片保存在某处,并可能在picture.Image
行中使用{而不是new Bitmap
。
请PascalCase
获取方法名称。 ;)