Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[問題] 類似小畫家的縮放功能(不是圖片)

5 views
Skip to first unread message

= =

unread,
Apr 22, 2014, 11:40:30 AM4/22/14
to
各位板友晚安,

我以前是唸資工的,不過C#算是自學,

最近因為幫忙做東西,需要撰寫類似小畫家的功能,但不太一樣,


簡單的說,我用windows form來實作,

把panel加到form裡面,使用者可以新增/刪除一些特定的textbox、label,

或者是我動態產生的image(一樣動態產生picturebox來顯示),

前面這三類的control會動態add至panel裡面,

但是這個panel的尺寸比例是有限制的,width比height長很多,

實際上我最終的目的是把


「已經新增各種control的panel印出來」,


我的做法其實是比較偷懶的直接把panel轉成bitmap,

這樣的方法其實是把panel所在的螢幕區域截圖,

所以這個部分無法讓panel用scroll bar來顯示(隱藏的部分截不到)





----------前面大概簡介一下情況,以下是主要問題-----------

由於我panel尺寸的寬比高長很多,因此我想要像小畫家一樣,

實際畫布(panel)尺寸不變,但使用者的視覺上(view?)能縮放,

請參考以下小畫家畫面:

http://i.imgur.com/qxqcV7o.png

這是小畫家「檢視」中的「放大」和「縮小」功能,

可以看到這樣的縮放僅是視覺上可以把原本很大(可能大於螢幕解析度)

的畫布縮小到螢幕可見範圍,

滑鼠游標在畫布上移動時,左下角顯示的座標範圍仍舊跟原始畫布一樣,



這個功能我找了很久都不知道該怎麼實現,找到的資料幾乎都是討論

Form、image的縮放,我如果用panel.scale()來做的話,

是直接改變實際上panel的大小(利用滑鼠移動時顯示座標也看的出來),

我後來找了paint.net的source code來參考,

但是在轉換版本(我用VS2010)時因為有些檔案找不到而失敗,

直接看程式碼來trace的話,因為他很多都是自定控制項,

我追了半天還是不懂他到底是怎麼做的,

其他找到的小畫家範例都沒有看到這個功能,

不曉得有沒有哪位前輩知道我應該往哪個方向去找線索呢?

希望各位不吝賜教,感激不盡!

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.35.188.213
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1398181231.A.4DB.html

0 new messages