如何在System.Windows.Controls上找到绘图。*?

时间:2015-07-21 18:29:30

标签: c# wpf wpf-controls drawing draw

我正在挖掘用C#编写的WPF应用程序。
我需要绘制一个选择矩形,就像我们用来选择多个项目的那样(就像文件夹中的文件一样)。
我有一些对象,类型为System.Windows.Controls.Control,System.Windows.Controls.ContentControl和System.Windows.FrameworkElement。
我假设,我需要覆盖onPaint,onDraw或reDraw / rePaint等事件。

我可以使用这些对象绘制矩形吗?

1 个答案:

答案 0 :(得分:0)

WPF和WinForms与这方面完全不同。在WinForms中,您可以使用事件处理程序中的OnPaint对象覆盖Graphics以直接绘制任何内容。

在WPF中,有一个OnRender方法,其外观与OnPaint类似:

protected override void OnRender(DrawingContext dc)
{
    SolidColorBrush mySolidColorBrush  = new SolidColorBrush();
    mySolidColorBrush.Color = Colors.LimeGreen;
    Pen myPen = new Pen(Brushes.Blue, 10);
    Rect myRect = new Rect(0, 0, 500, 500);
    dc.DrawRectangle(mySolidColorBrush, myPen, myRect);
}

然而,在WPF中,每个视觉元素都是一个对象,你无法直接绘制任何东西。什么"绘图"实际上DrawingContext的方法只是将对象插入到可视树中,稍后将与其他元素一起呈现。

使用OnRender通常不是最好的主意,它与快速Graphics操作相比有really bad performance。在WPF中,最好使用自定义控件或模板。