WPF添加DrawingVisual对象过多时,从完成绘制到屏幕显示间隔很长

opendoorpig 深圳市康拓普信息技术有限公司 2010-09-16 05:33:55
最近在学习WPF,发现添加DrawingVisual对象过多时,从完成绘制到屏幕显示间隔很长。
比方说,我定义了两个同心圆类:GDICircle和WPFCircle,都有坐标、半径、内外圈颜色。
GDI+的画法是先将圆画在一个相当的bitmap上,再根据坐标贴到屏幕大小的bitmap上,最后OnPaint时贴上屏幕。
WPF的画法是使用DrawingVisual对象,绘制完成后添加到视觉树。
同时画50000个圆,监控起始结束时间,GDI+虽然花费12秒左右,但是一旦结束就立即显示。
WPF完成50000个的绘制和添加到树花费6秒左右,但显示出来还要等6秒,甚至还要久。
这6秒WPF在干什么?有没有办法让它更快?
...全文
45 点赞 收藏 3
写回复
3 条回复
opendoorpig 2010年09月16日
补充说明一下,刚才试过模拟GDI+绘图的双缓冲,先创建一个ContainerVisual,把绘好的对象添加到它下面,50000个全部完成再把这个ContainerVisual添加到窗体的RootVisual下,效果一样,还是要间隔非常久才显示。
又尝试了创建WPFCircle对象时不调用Draw方法,只绘制最后一个对象,则显示出来非常快,0.3秒左右。
说明创建、添加DrawingVisual对象不慢,慢在画图,但是我取的结束时间明明是在执行所有的绘图之后,这6秒的显示延迟,源自哪里呢?
回复 点赞
porschev 2010年09月16日
帮顶。。。WPF没怎么用过。。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告