请教:如何保存Graphic对象已绘制的内容 我的问题是这样的,我要在一个背景上绘制一些图案,但是如果每次都重绘背景的话会造成闪烁,所以我想是不是背景绘制好之后将它保存为一个GDI对象,待重绘的时候将其选入Graphic中,有点类似于c++的双缓存技术,不知道可否实现。小弟刚学cs,请大家不吝赐教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 .NET已经从内部支持双缓冲如果你是在自定义控件上绘图,可以直接设置this.DoubleBuffer = true 给你个大概:先创建一个内存位图,大小可以按你实际的需要来定Bitmap buffer = new Bitmap(100, 100);然后从这个内存位图中创建一个Graphics,再在这个Graphics中绘制内容。Graphics g = Graphics.FromImage(buffer);g.DrawRectangle(...);最后在Paint事件中,将内存位图复制到控件的Graphics中。private void Form_Paint(object sender, PaintEventArgs e){ // 这只是个示范,实际需要提供的参数请参考智能感应和MSDN帮助。 e.Graphics.DrawImage(buffer);}另外,如果觉得这样复杂,也可以通过设置Form的DoubleBuffer属性来开启双缓冲的功能。 C# Gzip压缩后,linux解压缩的问题 c#如何做出来仿iphone上的那种文字滑动效果? 我是初学者,有个难题请教各位?先谢谢了 Winfrom pictureBox怎么让图片自动滚动起来。求代码 DataGrid1.DataKeys怎么用 再问个小问题??? C#的问题! 原理可以运行, 重装电脑就不能运行,是什么原因 关于取系统运行进程的问题 语法转换 提示错误,未将对象引用设置到对象实例 关于C#简单工厂设计模式中的疑问
如果你是在自定义控件上绘图,可以直接设置
this.DoubleBuffer = true
Bitmap buffer = new Bitmap(100, 100);然后从这个内存位图中创建一个Graphics,再在这个Graphics中绘制内容。
Graphics g = Graphics.FromImage(buffer);
g.DrawRectangle(...);最后在Paint事件中,将内存位图复制到控件的Graphics中。
private void Form_Paint(object sender, PaintEventArgs e)
{
// 这只是个示范,实际需要提供的参数请参考智能感应和MSDN帮助。
e.Graphics.DrawImage(buffer);
}
另外,如果觉得这样复杂,也可以通过设置Form的DoubleBuffer属性来开启双缓冲的功能。