读书人

为什么执行这一句FillRegion(Brush br

发布时间: 2012-09-10 22:20:12 作者: rapoo

为什么执行这一句FillRegion(Brush brush,Region region)要花很长时间,超过600ms

C# code
            TextureBrush bgimgBruch = new TextureBrush(m_bgImage);            GraphicsPath bgimgPath = new GraphicsPath();            Region eRegion = null;//.....  eRegion 在这里创建, 并执行了多次Uinon(超过600次)操作。            System.Diagnostics.Stopwatch timer2 = new System.Diagnostics.Stopwatch();//new一个stopwatch            timer2.Start();            g.FillRegion(bgimgBruch, eRegion);            timer2.Stop();            FileLog.WriteInfo("Draw(Graphics g) ", "Region Spend time: " + timer.ElapsedMilliseconds.ToString() + " FillRegion Spend time: " + timer2.ElapsedMilliseconds.ToString());



g.FillRegion(bgimgBruch, eRegion); 这句话的执行时间跟前面eRegion 执行Union的次数成一个比例关系。eRegion是很多不规则图像的组合。 但这个语句执行速度也太慢了, 超过600ms, 再多一点估计更慢。


有什么办法提高这个画图的速度吗?

[解决办法]
图形太复杂
[解决办法]
有,把复杂图形转换为字体然后绘制,速度立马上升
[解决办法]
FillRegion本身效率不高,别奢求了

读书人网 >C#

热点推荐