2010-08-24 68 views
1

我正在使用c#winforms顯示圖像。圖像的顯示是使用用戶控件完成的。現在我想讓用戶在疊加控件上畫線,放置其他小圖像,將文字等寫在圖像上。我如何提供此功能?如果我使用另一個用戶控件以透明的背面來顯示疊加控件,那會起作用嗎?任何其他解決方案將受到歡迎。在winforms中創建覆蓋控件

回答

3

您可以嘗試用畫布(Panel)來處理此問題,該畫布處理將圖像繪製爲背景以及之後的所有註釋/標記。這將使前景顯得透明。我希望你會想要設置Control.DoubleBuffer的表現。

您可以嘗試設置樣式ControlStyles .AllPaintingInWmPaint。此外,嘗試覆蓋Control.OnPaintBackground並什麼都不做,並覆蓋Control.OnPaint,並在那裏做所有的繪畫。

如果性能仍然不可接受,請密切關注PaintEventArgs.ClipRect屬性。這是您需要繪製的唯一區域。訣竅是弄清楚哪些註釋/覆蓋與這個矩形相交併以正確的順序繪製它們。

無論這個帆布或更高級別的控制需要跟蹤鼠標移動,讓你知道在哪裏畫線,粘貼圖片等

+0

+1,建議提交'DoubleBuffer',這將減少閃爍。周圍的偉大建議。我用覆蓋背景的多個面板完成了此操作。而且你對跟蹤鼠標移動是正確的,這成爲一個真正的挑戰。面板作爲使用矩形的畫布的優點在於面板內置了鼠標跟蹤。 – IAbstract 2010-12-17 14:09:36