大佬們好
小弟作業用Winform寫了一個控制元件,繼承自panel,在他的onpaint方法中重繪顯示圖片,圖片大小會很長(線掃相機),到15K*40K的樣子,然后我需要在圖片上做繪圖(調整大小,平移等,均實作)
問題:每次調整上層繪圖都需要重繪整個panel,當顯示圖片較大時,顯示很慢很慢,這導致調整也很卡
然后想著跟WPF一樣,上面覆寫一層別的控制元件,設定為透明,然后我就裂開了

不管通過通過任何方式重繪上層覆寫的控制元件,整個區域都會重繪,然后底層的圖片層依舊會重繪
想了下,嘗試了
1 掛起下層控制元件特定時候聰慧:呼叫control.SuspendLayout();無用
2 攔截訊息SendMessage(pbxImage.Handle, WM_SETREDRAW, 0, IntPtr.Zero);無用
想問問各路大姥姥們,有沒有什么想法可以探索
之所以非要使用winform,是因為影像要顯示為位圖,即放大后要能看到清晰度灰度,WPF沒找打有什么方法可以實作這種繪制
可用50分全部奉上;(雖然大佬也不在乎
uj5u.com熱心網友回復:
Winform和WPF在繪圖方面的差別在于前者用GDI+,后者用的DX。D2D顯示BMP沒問題的吧,WPF里不是有Canvas控制元件和Image控制元件。Winform里用控制元件遮擋不能用透明,透明就全透明了,沒什么用,而是自定義Region屬性,把非遮擋部分用相關幾何操作方法扣掉。
uj5u.com熱心網友回復:
您好,WPF中canvas和image在繪圖之后如果放大,像素和像素只檢都是模糊過度的,而我這邊需要實作單個像素分明,類似于windows自帶的圖片查看器,或者其實我如果能寫出來win7自帶的那個也可以,顯示速度和縮放拖動都可以[捂臉],寫不出來
而是自定義Region屬性,把非遮擋部分用相關幾何操作方法扣掉這個意思是我自己創建一個region,將我需要重回的區域放進去,比如我從會矩形只重繪一個矩形的外框,而不是整個矩形,是這個意思嗎
感謝回復
uj5u.com熱心網友回復:
是的,覆寫控制元件就畫個外框。
uj5u.com熱心網友回復:
比如畫一個中空的表單:
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/228646.html
標籤:組件/控件開發
