用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# 编的练练看-工程文件,抱歉发迟了 API 参数 转换 何时使用ADO.NET异步执行命令?需要注意什么? remoting做事件时产生异常,一般的方法调用可以,奇怪 如何取得DataSet["DataTable"]在DataGridView中顯示的當前行字段值? 问一个基础问题,关于控件随窗体大小变化的问题 在服务中如何访问局域网中的共享目录 這個問題還有救嗎﹖ 自定义控件中UserControl(用户控件)和CustomControl(自定义控件)的区别是什么!? 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不停的读取的(你调试一下就知道),
{
//绘制图片方法
}