我正在挖掘用C#编写的WPF应用程序。
我需要绘制一个选择矩形,就像我们用来选择多个项目的那样(就像文件夹中的文件一样)。
我有一些对象,类型为System.Windows.Controls.Control,System.Windows.Controls.ContentControl和System.Windows.FrameworkElement。
我假设,我需要覆盖onPaint,onDraw或reDraw / rePaint等事件。
我可以使用这些对象绘制矩形吗?
答案 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中,最好使用自定义控件或模板。