社区
C#
帖子详情
GDI+绘图闪烁问题
myfan0707
2009-11-25 03:00:36
我在wince下绘图,试用了双缓冲技术:
1,在内存建一张图
2,把图画到图片上
3,把图片画到内存
结果闪烁情况有所减轻,但是在小范围移动图片的时候还是闪的厉害,不知如何解决?
...全文
253
10
打赏
收藏
GDI+绘图闪烁问题
我在wince下绘图,试用了双缓冲技术: 1,在内存建一张图 2,把图画到图片上 3,把图片画到内存 结果闪烁情况有所减轻,但是在小范围移动图片的时候还是闪的厉害,不知如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
myfan0707
2009-11-26
打赏
举报
回复
[Quote=引用 8 楼 weiletian 的回复:]
我在winc下做过这个,使用双缓冲只能减弱闪烁,不能完全消除。
不知你用来装载图片的控件是什么呢?最好用picturebox,因其重新加载图片时能把上一次的图片完全覆盖,能较好的减轻闪烁。
据我的理解,双缓冲是把静态图存储于内存中,每次绘制动态图并加载到内存中已有的静态图,最后把图片显示在控件中。
[/Quote]
我用的UserControl,充当画布
myfan0707
2009-11-26
打赏
举报
回复
有没有人做过呀?帮帮忙吧
weiletian
2009-11-25
打赏
举报
回复
我在winc下做过这个,使用双缓冲只能减弱闪烁,不能完全消除。
不知你用来装载图片的控件是什么呢?最好用picturebox,因其重新加载图片时能把上一次的图片完全覆盖,能较好的减轻闪烁。
据我的理解,双缓冲是把静态图存储于内存中,每次绘制动态图并加载到内存中已有的静态图,最后把图片显示在控件中。
angel6709
2009-11-25
打赏
举报
回复
这个@#¥%
真不知道该怎么整。指定是上面的过程,哈哈。看看
private BufferedGraphicsContext
private BufferedGraphics
是怎么实现的,自己做个。
myfan0707
2009-11-25
打赏
举报
回复
非常感谢angel6709,在精简框架下,很多东西是不支持的。不知还有其他办法没有?我的绘图过程是把要绘的图分为静态和动态,把静态图绘到图片上,把动态图绘到带有静态图的图片上,再把最终的图绘到内存。移动的过程因为不停的重绘所以闪的厉害,很郁闷啊
angel6709
2009-11-25
打赏
举报
回复
private Bitmap srcImage;
private Bitmap toDrawBeffor;
private Graphics gOfToDrawBeffor;
private Graphics gOfbuff;
private BufferedGraphicsContext ctx;
private BufferedGraphics bg;
private Graphics MyGraphics;
MyGraphics = panel1.CreateGraphics();
ctx = BufferedGraphicsManager.Current;
bg = ctx.Allocate(MyGraphics, new Rectangle(new Point(0, 0), panel1.Size));
gOfbuff = bg.Graphics;
toDrawBeffor = new Bitmap(panel1.Width,panel1.Height);
gOfToDrawBeffor = Graphics.FromImage(toDrawBeffor);
////////下面是你要做的
gOfToDrawBeffor.DrawLine(Pens.Blue, 0, 0, 1000, 1000);
//////上面是你要做的
gOfbuff.Clear(panel1.BackColor);
gOfbuff.DrawImage(toDrawBeffor, 0, 0);
bg.Render();
angel6709
2009-11-25
打赏
举报
回复
MyGraphics = panel1.CreateGraphics();
ctx = BufferedGraphicsManager.Current;
bg = ctx.Allocate(MyGraphics, new Rectangle(new Point(0, 0), panel1.Size));
gOfbuff = bg.Graphics;
toDrawBeffor = new Bitmap(panel1.Width,panel1.Height);
gOfToDrawBeffor = Graphics.FromImage(toDrawBeffor);
gOfToDrawBeffor.DrawLine(1,1,100,100);
gOfbuff.Clear(panel1.BackColor);
gOfbuff.DrawImage(toDrawBeffor, 0, 0);
bg.Render();
xg198804
2009-11-25
打赏
举报
回复
[Quote=引用 2 楼 myfan0707 的回复:]
引用 1 楼 xg198804 的回复:
采用图像复贴,不让它重绘,就是说把先前绘好的内存图像保存下来,移动的时候把保存好的图像复贴出来
这个思路我能明白,不知道如何实现?能否再详细跟我说下,不胜感激
[/Quote]
不好意思,我还只用过位块传输,双缓存,图像复贴还没有具体用过,你现在可能正要用到,可以借此查找一下资料一试,这是个不错的学习方法。
myfan0707
2009-11-25
打赏
举报
回复
[Quote=引用 1 楼 xg198804 的回复:]
采用图像复贴,不让它重绘,就是说把先前绘好的内存图像保存下来,移动的时候把保存好的图像复贴出来
[/Quote]
这个思路我能明白,不知道如何实现?能否再详细跟我说下,不胜感激
xg198804
2009-11-25
打赏
举报
回复
采用图像复贴,不让它重绘,就是说把先前绘好的内存图像保存下来,移动的时候把保存好的图像复贴出来
VC6下的
GDI+
双缓冲 解决
闪烁
问题
VC6下的
GDI+
双缓冲,解决
闪烁
问题
,附有例子源码,一看就会,图像编程过程中非常实用
GDI+
绘图
功能软件
完成各种几何元素的绘制,包括Undo,Redo功能,实现了载入图像,实现了几何元素的拖拉操作等
C#使用
GDI+
绘图
C#使用
GDI+
绘图
,C#高级编程,包含代码
GDI+
“双缓冲”
绘图
,避免
闪烁
源码
资源介绍:。源码结合
GDI+
模块,在画板上画出和定位文本。资源作者:。@易语言自学网。资源界面:。资源下载:。
GDI+
绘制曲线图_gentle7gp_gdi曲线_
GDI+
绘制动态曲线图_
GDI+
绘制动态曲线图演示,实现利用随机数据绘制成一段时间的实时动态的显示
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章