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在干什么?有没有办法让它更快?
...全文
333 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
opendoorpig 2010-09-16
  • 打赏
  • 举报
回复 1
补充说明一下,刚才试过模拟GDI+绘图的双缓冲,先创建一个ContainerVisual,把绘好的对象添加到它下面,50000个全部完成再把这个ContainerVisual添加到窗体的RootVisual下,效果一样,还是要间隔非常久才显示。
又尝试了创建WPFCircle对象时不调用Draw方法,只绘制最后一个对象,则显示出来非常快,0.3秒左右。
说明创建、添加DrawingVisual对象不慢,慢在画图,但是我取的结束时间明明是在执行所有的绘图之后,这6秒的显示延迟,源自哪里呢?
porschev 2010-09-16
  • 打赏
  • 举报
回复
帮顶。。。WPF没怎么用过。。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧