2011-11-10 70 views
0

我正在寫一個繪畫應用程序。用戶必須能夠在繪製或編輯後使用所有對象進行移動。我有一個畫筆和擦除工具,所以用戶可以擦除用畫筆繪製的所有或任何部分對象。所以我做了一個DrawBrush對象,它包含一個由GraphicsPath製作的System.Drawing.RegionSystem.Drawing.Region調整大小

但我不知道如何確定它的大小。我需要在每一個方向上分別移動鼠標改變大小(例如只到左)

有人可以幫助我嗎?

我能夠與該對象(移動),但沒有大小做任何事情......

+0

我被你的問題感到困惑 - 你希望能夠用鼠標隨意拖動對象,用鼠標舒展他們,滾動整個來看,...? – Justin

+0

是的,確切地說,我可以做所有事情,但不能拉伸... – MadMaxx

+0

請用您的信息更新您的問題;這是你問題的一個重要方面。 – Marijn

回答

2

的區域猶如一道籬笆 - 它只是簡單的標記出區域的邊界。它不包含任何圖形,因此調整區域大小將不會有直接/可見的效果。

如果您希望能夠在編輯器中移動或調整位圖圖像的某些部分,則需要將一部分主圖像(如您所在地區指定的)複製到臨時位圖中。然後,您可以將速度位圖繪製回您的主圖像(在不同的位置和/或不同的尺寸)。

如果您希望能夠在您的繪畫程序中繪製多個對象,然後獨立編輯它們(將它們移動並調整大小),則需要將它們中的每一個存儲在單獨的位圖對象和複合它們一起顯示屏幕上的最終圖像或將其保存爲平面位圖格式。如果你沒有像這樣分開保存所有的形狀,你將失去太多的信息,以後你將無法編輯它們。

在嘗試找出編寫代碼來做到這一點,你可能需要考慮一下你的編輯器的設計 - 這是什麼需要做的,你將如何實現的呢?你的「文件」將如何描述? (單個位圖?許多在不同位置繪製的小型位圖?矢量路徑?)。如果在你理解代表文檔的方式之前編寫代碼,你可能會將自己描繪成一個角落(對雙關語抱歉),並且完全陷入困境。

+0

,所以我需要創建一個新的透明位圖與區域填充選定的科洛爾和轉換位圖? – MadMaxx

+0

可能。 (我不完全確定你要做什麼,所以很難提出最好的方法)。你可以像這樣渲染一個位圖,然後調整它的大小。但是,如果你只是用顏色填充GraphicsPath,那麼你可以簡單地縮放路徑中點的位置並直接重繪它。這可以通過計算所有點的新位置,或通過更改您用於繪製路徑以應用所需的縮放/平移的轉換矩陣來完成。一旦你瞭解它,這是一種簡單的技術,但可能是一個陡峭的學習曲線。 –

+0

感謝您的建議,但現在,我不關心graphicPath,因爲當我想要清除繪製的繪圖的任何部分時,我將它作爲繪製區域減去新繪製的(通過橡皮擦)地區... 我可以做GraphicPath「minus」GraphicPath嗎?然後,我將能夠調整GraphicPath的大小,然後重新繪製一個區域... – MadMaxx