2010-10-18 42 views
1

道歉,如果已經有線程,我找不到一個可以讓我的牙齒進入的線程。Newb:WPF自定義圖形控件 - 從哪裏開始

無論如何,我是WPF的新手,想要創建一個自定義控件,它將成爲一種圖形控件。圖形總是由一個圓圈組成,其中包含幾個方塊的矩陣(實際上從幾百到幾千)矩形需要響應鼠標單擊和鼠標懸停事件(最好可以通過鍵盤進行導航/選擇)每個正方形將表示我編碼的對象。

在過去,我使用了網格控件來顯示彩色方塊(在CBuilder中使用VCL),但我想製作一個圖形版本。 (其實,我想問的另一個問題是,是否有WPF網格控件,我可以設置單個單元的顏色?)

問題是,從哪裏開始?我是從畫布開始畫畫的嗎?我是否從現有對象派生?我只是有點缺乏實現的想法,所以任何指針或建議,你可以提供將大大收到。

BBZ

回答

1

首先,我會建議在WPF得到一個體面的手柄,以及它如何接近設定的問題。它與以前的.NET桌面技術(如WinForms)完全不同。一旦您對邏輯與UI的分離以及WPF如何解決問題有了很好的理解,那麼您可以潛入並開始根據您遇到的情況做出正確的決策。

您提到的問題可以通過多種方式解決。關於您使用Grid的問題,可以這樣做,因爲這是一種佈局類型。在安排視覺結構方面,它遠遠優於Canvas。定義的行/列只不過是容納不同UI對象的容器。因此,將Rectangle推入Grid並根據需要着色會給你你正在尋找的效果。這個Rectangle然後可以成爲一個自定義的控件,這將允許您定義不同的屬性,以及鼠標懸掛的特定觸發器等等。

在更高層次上,您將希望將此邏輯封裝爲UserControl也將保留您的自定義控件。也許UserControl包含Grid這將使用您的自定義控件。

希望這會給你一些關於如何開始的想法,但是更好地理解WPF將幫助你實現你的目標。

+0

感謝您的意見。網格聽起來不錯,但我不知道網格中數千個矩形的內存要求可能會如何。此外,是否容易動態調整所述網格的行數和列數? – Bob 2010-10-19 10:27:56

+0

是調整行/列數很容易,這裏是一個關於在WPF中的網格控件的帖子... http://blogonwpfwcf.blogspot.com/2009/02/grid-in-wpf.html我不確定內存要求是什麼,因爲它取決於矩形以及它的功能或不具備的功能,但是我認爲它們不會太壞。我這樣說的原因是,我看到Silverlight Grids包含數百個汽車圖像,並縮小了結果,性能相當高,並且通過瀏覽器。 – 2010-10-19 14:21:33