私は、グラフの左端から右端にグラフを描画するためのさまざまな方法を試していました。今までは、OKを実行するポリラインを使用したキャンバスを使用していましたが、まだ改善がありました。DrawingContext.DrawLineパフォーマンスの問題
私がDrawingContext.DrawLineを試したとき、私は信じられないほど悪いパフォーマンスを経験しましたが、なぜそれを理解できません。これは、それが問題を示して、私が思い付くことができる最も凝縮コードです:
<StackPanel>
<l:TestControl Height="16"/>
<!-- copy+paste the above line a few times -->
</StackPanel>
今すぐウィンドウのサイズを変更:中TestControlsの数に応じて、
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私はVSの "Stop Debugger"ボタンを押しても目に見えない遅延(10個のコントロール)または30秒間の停止(100個のコントロール)を経験します...
私はこれについてはかなり混乱していますが、明らかに私は間違ったことをしていますが、コード私はそれが何であるかを見ていないので、シンプルです... 重要な場合には、.Net4を使用しています。
ありがとうMarat、ちょっと前に気付いたよ:) – wilford