在WPF元素上绘制非常简单

时间:2012-06-11 16:53:15

标签: wpf drawing

我必须在WPF用户控件或常规WPF控件(如Image / Canvas)上绘制许多行。 线条的位置和大小保持不变,但颜色随时间而变化。

  • 约2000行
  • 以后不需要引用它们或与它们交互,因为它可以使用形状
  • 关于颜色更新将再次绘制所有行(这就是我在WinForms中的操作方式)。
  • 更新只发生在用户操作上,因此每隔几秒钟就会发生一次,直到天没有变化
  • 更新应该很快,不会对程序性能产生太大影响

使用FrameworkElement的派生,必须覆盖两个属性,这对于这样一个简单的任务来说是如此多的开销恕我直言。

我想用尽可能少的代码完成它,并且最好的表现只能在屏幕上看到它,没有事件或任何交互。

在WinForms中,它非常简单:您可以实例化图形对象并绘制到它上面。在那里,我在位图上绘制了线条,并将位图分配给WinForms-Image。我甚至可以通过改变图像的大小来缩放线条。

据我所知,直接绘图(WinForms)和保留绘图(WPF)之间存在差异。可以保留它想要的,应该有一个简单的解决方案来创建一堆行并将它们分配给用户控件或常规WPF控件!?

感谢您的帮助。

儒略

1 个答案:

答案 0 :(得分:0)

听起来你需要使用OnRender和DrawingContext,就像在WinForms中一样,例如。

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

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

    foreach(...)
    {
        drawingContext.DrawLine(pen, p1, p2);
    }
}