用GDI+(C#语言)画图,图形保存问题

yuyue3 2008-11-23 04:30:59
我用GDI+(C#)语言编了个程序,单击按钮后出来个图形,然后鼠标可以拖动(已实现),但当第二次单击鼠标出来图形并拖动后,第一个图形就没有了。请问如何才能使前面的图形不消失?先谢谢各位了!我是个初学者。
...全文
438 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonny008 2008-11-25
  • 打赏
  • 举报
回复
矢量么?那就定义一堆东西保存你的画图的数据,可以参考.dxf文件
benyouyong 2008-11-25
  • 打赏
  • 举报
回复
protected override void OnPaint(PaintEventArgs e)
{
//绘制图片方法
}
bluelight68 2008-11-25
  • 打赏
  • 举报
回复
GDI中,你不添加一个BITMAP到CD中,CD是没有的。

当你第2次点击鼠标的时候,你的程序中,肯定是加载第2张图片并显示,没错吧,那么第一张图片呢??

首先你要搞清楚一点,Windows显示图片的变化是要刷新的,如果你刷新了,那么你就必须得重绘刷新的无效区域。在你的例子中,无效区域应该是整个Dialog的Client区域,那么当你在画第2张图片的时候,第一张图片你同样得画上去,才会显示两张图片,因为你在画第2张图片的时候,第1张图片没有再加载了,被屏幕刷掉了。
方蓝 2008-11-24
  • 打赏
  • 举报
回复
我觉得你不如定义一个数组,点击按钮时就向数组新增一条数组。
然后在GDI+在OnPaint里循环绘出每个对象,要知道,GDI+对象在OnPaint不停的读取的(你调试一下就知道),
Chawind 2008-11-24
  • 打赏
  • 举报
回复
2楼说的没错
yingongong 2008-11-23
  • 打赏
  • 举报
回复
混点分..下载个文件
DustLand 2008-11-23
  • 打赏
  • 举报
回复
全局变量:Bitmap originbmp = new Bitmap(400,400);

在点击按钮的时候
Graphics gs = Graphics.FromImage(originbmp);
然后在这个gs画布上画,画完之后this.Invalidate();

Form中有一个事件是Paint,在这个事件中
Bitmap DesBmp = (Bitmap)originbmp.Clone();
Graphics gs = this.CreateGraphics();
gs.DrawImage(DesBmp, new Point(200, 50));

大体就是这个意思吧
DustLand 2008-11-23
  • 打赏
  • 举报
回复
全局变量:Bitmap originbmp = new Bitmap(400,400);

在点击按钮的时候
Graphics gs = Graphics.FromImage(originbmp);
然后在这个gs画布上画,画完之后this.Invalidate();

Form中有一个事件是Paint,在这个事件中
Bitmap DesBmp = (Bitmap)originbmp.Clone();
Graphics gs = this.CreateGraphics();
gs.DrawImage(DesBmp, new Point(200, 50));

大体就是这个意思吧
yuyue3 2008-11-23
  • 打赏
  • 举报
回复
2楼说的道理我明白了,能否把解决方法说下呢?因为我实在很菜的,谢谢啊。
yuyue3 2008-11-23
  • 打赏
  • 举报
回复
1楼说的办法,请问大家行不行?
jy251 2008-11-23
  • 打赏
  • 举报
回复
GDI中,你不添加一个BITMAP到CD中,CD是没有的。

当你第2次点击鼠标的时候,你的程序中,肯定是加载第2张图片并显示,没错吧,那么第一张图片呢??

首先你要搞清楚一点,Windows显示图片的变化是要刷新的,如果你刷新了,那么你就必须得重绘刷新的无效区域。在你的例子中,无效区域应该是整个Dialog的Client区域,那么当你在画第2张图片的时候,第一张图片你同样得画上去,才会显示两张图片,因为你在画第2张图片的时候,第1张图片没有再加载了,被屏幕刷掉了。
DustLand 2008-11-23
  • 打赏
  • 举报
回复
可不可以先定义一个bitmap的全局变量g_bmp,先在g_bmp图像上画,然后在在Pain函数中,复制g_bmp,把复制得到的文件贴到界面上?

111,131

社区成员

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

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

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