替代wpf中的OnPaintBackground。

时间:2012-05-21 14:07:35

标签: c# wpf winforms

有一个Windows窗体应用程序,我试图转换为Wpf,但当我使用

覆盖主窗口上的onPaintBackground
protected override void OnPaintBackground(PaintEventArgs pevent)

有错误

  

找不到合适的方法来覆盖

那么wpf中onPaintBackground的替代方法是什么?

2 个答案:

答案 0 :(得分:2)

一般来说,你不应该在WPF中“画画”。因为连续重建对象(钢笔,画笔,形状)可能会非常慢。

您可以覆盖此OnRender方法,例如:

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);
}

答案 1 :(得分:2)

你真的不想用WPF这样做。有充分的理由来覆盖OnRender,但作为绘画的替代品,背景不是其中之一。 WPF是一种保留模式的图形系统,WinForms是一种即时模式系统。你想要阅读这里的差异:

http://msdn.microsoft.com/en-us/library/ff684178%28v=vs.85%29.aspx

对于WinForms,如果您想要为控件设置动画,则首先需要清除之前渲染的区域以避免伪影,使用WPF,您只需为所需的属性设置动画,让系统处理像素无效。