0

WPF ユーザーコントロールまたは通常の WPF コントロール (Image / Canvas など) に多くの線を描画する必要があります。線の位置と大きさはそのままですが、時間の経過とともに色が変化します。

  • 約2000行
  • それらを参照したり、後でそれらを操作したりする必要はありません。形状で可能になるからです。
  • 色の更新時に、すべての線が再び描画されます (これが WinForms で行った方法です)。
  • 更新はユーザーの操作によってのみ発生するため、数秒ごとに変化しない日までのように
  • プログラムのパフォーマンスに大きな影響を与えないように、更新は迅速に行う必要があります

FrameworkElement からの派生を使用すると、2 つのプロパティをオーバーライドする必要があるため、このような単純なタスクの IMHO ではオーバーヘッドが非常に大きくなります。

できるだけ少ないコードでそれを達成したいと思います。また、イベントやその他の相互作用なしで、画面上でのみ表示する必要があるという点で最高のパフォーマンスを実現したいと考えています。

WinForms ではとても簡単でした。グラフィックス オブジェクトをインスタンス化し、その上に描画します。そこで、ビットマップに線を描画し、ビットマップを WinForms-Image に割り当てました。画像のサイズを変更して線を拡大縮小することもできました。

直接描画 (WinForms) と保持描画 (WPF) には違いがあることを理解しています。必要なだけ保持できますが、一連の行を作成してユーザーコントロールまたは通常の WPF コントロールに割り当てる簡単なソリューションがあるはずです!?

助けてくれてありがとう。

ジュリアン

4

1 に答える 1

0

WinForms とほぼ同じ方法で OnRender と DrawingContext が必要なようです。

protected override void OnRender(DrawingContext drawingContext)
{
    base.OnRender(drawingContext);

    Pen pen = new Pen(Brushes.Blue, 1);

    foreach(...)
    {
        drawingContext.DrawLine(pen, p1, p2);
    }
}
于 2012-06-11T17:01:38.433 に答える