我寫了一個C#應用程序來繪製矢量圖元。對於繪製表面,我使用放置在TabControl中的Draw.DoubleBufferedPanel。當我創建新項目時,新建了一個帶有新Draw.DoubleBufferedPanel的標籤頁。但是,在用於拖拽的按鈕的點擊事件中,我使用了主要的Draw.DoubleBufferedPanel,當我創建新的選項卡時,我無法在其中繪製任何內容。爲了吸引新創建的項目,我必須做些什麼?如何在運行時創建DoubleBufferedPanel
回答
確保您的控制層次是正確的:
- 的MainForm
- 的TabControl
- TabPage1
- MyDrawingControl1:MyDrawControl
- TabPage2
- MyDrawingControl2:MyDrawControl
然後在MyDrawControl的油漆處理程序(而不是它的實例),你需要通過翻閱剪取完整繪製到只有自己的表面(平面)。
更新:
關於如何實現做一些自定義的圖紙可以發現here控制信息。一般來說,您必須編寫自己的類,並從控件(或其後代之一,如Button)繼承並實現OnPaint()方法。在OnPaint()中,您可以使用Graphic來繪製。該控件可以設置爲DoubleBuffered = true,以便Winforms自動在您的OnPaint()代碼周圍應用雙緩衝。
是的,我知道。但如何做到這一點?我的繪製處理程序代碼是:Draw.DoubleBufferedPanel NewDrawArea = sender作爲Draw.DoubleBufferedPanel; eHandler.MouseDown(e.Location); NewDrawArea.Invalidate(); –
你有沒有像上面的「MyDrawControl」一樣編寫自己的控件(類),並將其放置在每個Tab頁面中?你可以發佈一些代碼,以便我們看到你現在做了嗎? – Marc
- 1. 如何在運行時創建對象?
- 2. 如何在運行時創建DataTemplate?
- 3. 如何在運行時創建控件?
- 4. 如何在運行時創建DB-Tables
- 5. 如何在運行時創建
- 6. 如何在運行時創建的unity3d
- 7. 如何在運行時創建按鈕?
- 8. 如何在運行時創建XmlMappingSource?
- 9. 如何在運行時創建包?
- 10. 如何創建類的實例在運行時創建
- 11. 如何在運行時創建的面板創建組件?
- 12. 在運行時創建Tframes:
- 13. 在運行時創建TRadioGroup
- 14. 在運行時創建XML
- 15. 創建它在運行時
- 16. 在運行時創建TabView?
- 17. 在運行時創建TextBlock
- 18. 在運行時創建類
- 19. 在運行時創建類
- 20. 創建運行時
- 21. 如何創建運行時C#
- 22. 如何爲運行時創建的按鈕創建事件?
- 23. 在運行時創建jrxml文件並在運行時修改
- 24. JSP:如何在運行時創建表中的行數
- 25. 如何在運行時創建QGridLayout並動態生成行?
- 26. 創建對象運行時
- 27. 運行時線程創建
- 28. 運行時創建變量
- 29. 創建TToolbutton運行時
- 30. 運行時創建DSServerClass?
備註:您需要在繪圖處理程序中繪製。 – SLaks
我知道。我爲新的DoubleBufferedPanel添加了繪製處理程序,但它不起作用。我只能在我用設計師創建的主標籤中繪製。我的問題是如果我創建5個不同的選項卡並且我想在其中的任何選項卡中繪製,該怎麼辦? –
顯示您的繪圖代碼的最小表示 - 具體顯示如何引用您繪製的面板。 –