2015-07-21 56 views
0

我正在挖掘用C#編寫的WPF應用程序。
我需要繪製一個選擇矩形,就像我們用來選擇多個項目(如文件夾中的文件)一樣。
我有幾個對象,其類型爲System.Windows.Controls.Control,System.Windows.Controls.ContentControl和System.Windows.FrameworkElement。
我認爲,我需要重寫像onPaint,onDraw或reDraw/rePaint的事件。

我可以使用這些對象繪製矩形,以及如何?如何在System.Windows.Controls。*上查找繪圖?

+0

請告訴我要添加什麼信息,我會這樣做。 –

+1

您沒有WinForms應用程序,您有一個WPF應用程序。這兩件事情**不是**相同...... –

+0

好的。我將學習如何首先繪製WPF,然後再回來。 –

回答

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通常不是最好的主意,它有一個really bad performance比較快速Graphics操作。在WPF中,最好使用自定義控件或模板。