请教,C# 画的图不见了

qqqwwwqw 2009-05-29 06:09:27
问题描述
我在Winform里面放一个Panel,然后调用Panel的MouseDoubleClick事件,调用
Graphics g = this.panel1.CreateGraphics()来进行画图,结果图是画上了,
当我运行程序时就在这个WinForm上的画程序一切正常,但是当我点击其它窗口再点击
这个WinForm窗口时,就发现窗口的画的图像不见了。

谢谢!
...全文
268 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
markfengyunzhou 2009-12-28
  • 打赏
  • 举报
回复
写在Onpaint里:
protected override void OnPaint(PaintEventArgs e)
{
Graphics gc = this.CreateGraphics();
gc.DrawLine(new Pen(Color.Red, 5), 0, 0, 500, 500);
gc.Dispose();
base.OnPaint(e);
}
wartim 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 gisfarmer 的回复:]
神奇1
[/Quote]

太水了
lr21shiji 2009-05-31
  • 打赏
  • 举报
回复
声明一个变量保存这个Image对象也是可以的呀
优途科技 2009-05-31
  • 打赏
  • 举报
回复
神奇1
itrefer 2009-05-31
  • 打赏
  • 举报
回复
MARK
qiqundelang 2009-05-31
  • 打赏
  • 举报
回复
收藏
wartim 2009-05-31
  • 打赏
  • 举报
回复
要么放在form的paint事件里每次重绘
要么画在一个picturebox的image里,就不会消失了

CraxyMouse 2009-05-31
  • 打赏
  • 举报
回复
ypf222140 2009-05-31
  • 打赏
  • 举报
回复
窗口的切换、最大化、最小化等都会触发窗体的Paint事件。

在Paint事件里写重绘的代码。
aight 2009-05-30
  • 打赏
  • 举报
回复
窗体需要重绘的,也可以设置方法自动重绘。
csz_1987 2009-05-30
  • 打赏
  • 举报
回复
窗口的切换、最大化、最小化等都会触发窗体的Paint事件。

在Paint事件里写重绘的代码。
热学沸腾56 2009-05-29
  • 打赏
  • 举报
回复
重绘问题..这个好做

但我有一个重绘时焦点问题一直没有解决!超级郁闷~~
onthebox 2009-05-29
  • 打赏
  • 举报
回复
BufferedGraphicsContext
BufferedGraphics
帮助文档中有“双缓存”的例子,那个可能会更好的解决问题
上面两个是涉及双缓存的类
onthebox 2009-05-29
  • 打赏
  • 举报
回复
单独列出画图方法
在MouseDoubleClick和Paint事件中都去调用
在配合5楼的说法就完了

private void panel1_Paint(object sender, PaintEventArgs e)
{
DrawItem();
}

private void panel1_MouseDoubleClick(object sender, MouseEventArgs e)
{
DrawItem();
}

private void DrawItem()
{
this.panel1.CreateGraphics().DrawLine(new Pen(Color.Blue), 10, 10, 40, 40);
}
qqqwwwqw 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
定义一个bool型变量并初始化为false,在Panel的Paint事件中判断该变量为true则进行画图,在Panel的MouseDoubleClick事件中将该变量设为true并刷新Panel。
[/Quote]

能说清楚点吗?我是在双击的时候就在那个点上画个圆
cnzdgs 2009-05-29
  • 打赏
  • 举报
回复
定义一个bool型变量并初始化为false,在Panel的Paint事件中判断该变量为true则进行画图,在Panel的MouseDoubleClick事件中将该变量设为true并刷新Panel。
liuning0820 2009-05-29
  • 打赏
  • 举报
回复
正是因为重绘,才使form重新Load,但是因为你上面提到的draw的东西是在click事件里面做的,所以重绘的时候不会画.
lidaohang1989 2009-05-29
  • 打赏
  • 举报
回复
重绘
qqqwwwqw 2009-05-29
  • 打赏
  • 举报
回复
恩 应该是重新画的
但是我要怎么才能避免这种情况
fly871117 2009-05-29
  • 打赏
  • 举报
回复
应该是要重绘的。。。

110,531

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧