用GDI+(C#语言)画图,图形保存问题 我用GDI+(C#)语言编了个程序,单击按钮后出来个图形,然后鼠标可以拖动(已实现),但当第二次单击鼠标出来图形并拖动后,第一个图形就没有了。请问如何才能使前面的图形不消失?先谢谢各位了!我是个初学者。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可不可以先定义一个bitmap的全局变量g_bmp,先在g_bmp图像上画,然后在在Pain函数中,复制g_bmp,把复制得到的文件贴到界面上? GDI中,你不添加一个BITMAP到CD中,CD是没有的。当你第2次点击鼠标的时候,你的程序中,肯定是加载第2张图片并显示,没错吧,那么第一张图片呢??首先你要搞清楚一点,Windows显示图片的变化是要刷新的,如果你刷新了,那么你就必须得重绘刷新的无效区域。在你的例子中,无效区域应该是整个Dialog的Client区域,那么当你在画第2张图片的时候,第一张图片你同样得画上去,才会显示两张图片,因为你在画第2张图片的时候,第1张图片没有再加载了,被屏幕刷掉了。 全局变量: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));大体就是这个意思吧 全局变量: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));大体就是这个意思吧 我觉得你不如定义一个数组,点击按钮时就向数组新增一条数组。然后在GDI+在OnPaint里循环绘出每个对象,要知道,GDI+对象在OnPaint不停的读取的(你调试一下就知道), GDI中,你不添加一个BITMAP到CD中,CD是没有的。 当你第2次点击鼠标的时候,你的程序中,肯定是加载第2张图片并显示,没错吧,那么第一张图片呢?? 首先你要搞清楚一点,Windows显示图片的变化是要刷新的,如果你刷新了,那么你就必须得重绘刷新的无效区域。在你的例子中,无效区域应该是整个Dialog的Client区域,那么当你在画第2张图片的时候,第一张图片你同样得画上去,才会显示两张图片,因为你在画第2张图片的时候,第1张图片没有再加载了,被屏幕刷掉了。 protected override void OnPaint(PaintEventArgs e){ //绘制图片方法} 矢量么?那就定义一堆东西保存你的画图的数据,可以参考.dxf文件 C#Generator方法 如何动态添加DbParameter? 急需一个DEV EXPRESS的gridControl控件的案例 什么是解源码 c# Management 受保护 100分求.net2005网站后台系统 难道定时器受到内存的限制?~~~在线等待高人指点~~~ 我安装了,.NET是在,2000系统上,为什么,.NET的MSDN文档用着用着,就不能用了.出错dexprole.EXE提示"0x75da33d6"指令引用的"0x00233694"内存 分享Visual Studio 2013 Preview中的几个新特性 怎么定制属性? C#记事本的简单问题 关于一个编程问题
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));大体就是这个意思吧
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));大体就是这个意思吧
然后在GDI+在OnPaint里循环绘出每个对象,要知道,GDI+对象在OnPaint不停的读取的(你调试一下就知道),
{
//绘制图片方法
}