gpt4 book ai didi

wpf - DrawingContext.DrawLine性能问题

转载 作者:行者123 更新时间:2023-12-04 14:05:36 25 4
gpt4 key购买 nike

我正在尝试从控件的左边缘到右边缘绘制图形的不同策略。到目前为止,我们一直在使用具有折线的“ Canvas ”,该折线执行的很好,但仍然可以进行一些改进。

当我尝试使用DrawingContext.DrawLine时,我的表现令人难以置信的糟糕,我不知道为什么。这是我可以提出的最简洁的代码,它说明了这个问题:

public class TestControl : Control {

static Pen pen = new Pen(Brushes.Gray, 1.0);
static Random rnd = new Random();

protected override void OnRender(DrawingContext drawingContext) {

var previousPoint = new Point(0, 0);

for (int x = 4; x < this.ActualWidth; x += 4) {
var newPoint = new Point(x, rnd.Next((int)this.ActualHeight));
drawingContext.DrawLine(pen, previousPoint, newPoint);
previousPoint = newPoint;
}
}
}

而且MainWindow.xaml仅包含以下内容:
<StackPanel>
<l:TestControl Height="16"/>
<!-- copy+paste the above line a few times -->
</StackPanel>

现在调整窗口大小:根据StackPanel中TestControl的数量,我会遇到明显的延迟(10个控件)或30秒钟的总静止状态(100个控件),我什至无法点击“Stop Debugger”按钮在VS中

我对此很困惑,显然我做错了事,但是由于代码是如此简单,所以我不知道那是什么。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我正在使用.Net4,以防万一。

最佳答案

您可以通过卡住笔来获得性能。

static TestControl()
{
pen.Freeze();
}

关于wpf - DrawingContext.DrawLine性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com