有一个Windows窗体应用程序,我试图转换为Wpf,但当我使用
覆盖主窗口上的onPaintBackgroundprotected override void OnPaintBackground(PaintEventArgs pevent)
有错误
找不到合适的方法来覆盖
那么wpf中onPaintBackground的替代方法是什么?
答案 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,您只需为所需的属性设置动画,让系统处理像素无效。