任何人都可以共享一個示例代碼在delphi畫布中畫一個非矩形部分的圖片嗎?在delphi畫布中畫一個非矩形部分的圖片
回答
您正在尋找GDI路徑。開始here,它解釋了在這種情況下的路徑,並在左側提供了鏈接來解釋可用的功能。
谷歌可以舉出很多在Delphi中使用路徑的例子。如果你找不到它們,請在這裏發表評論,我會看到我能爲你提供什麼。
Canvas.Ellipse(0, 0, 10, 20); // not a rectangle
我們怎樣才能以任何形狀剪切圖片,你沒有回答這個問題的任何部分 – Maysam 2010-07-22 01:36:54
你的問題很模糊。但我懷疑你正在尋找的是裁剪區域。閱讀它們。將目標設備上的剪切區域設置爲所需的形狀,然後將圖像繪製到設備上。只有在裁剪區域內的圖像部分纔會被繪製。
如何在delphi中做到這一點? – Maysam 2010-07-22 01:35:50
閱讀Windows GDI的區域和剪切函數,例如CreatePolygonRGN()和SelectClipRgn()。在線使用區域剪輯輸出應該有充足的例子。它非常簡單 - 您在目標DC上定義一個要限制繪製的區域,執行繪圖(圖像,線條等),然後將裁剪區域重置爲正常。以下是MSDN庫中的一個簡單示例:http://msdn.microsoft.com/zh-cn/library/dd183437(v=VS.85).aspx – GrandmasterB 2010-07-22 19:33:52
我使用所謂的運行列表爲此功能(廣義形狀和blitting它們)。我也看到他們也叫warplists。通過將形狀定義爲一組水平線來將形狀編碼爲運行列表,並且每行是兩個整數值(跳過n個像素,複製n個像素)。
這意味着您可以繪製整條線,只留下「高度」繪製操作。因此,定義了一個矩形(第一個從頂級角到左角(「xorg」,「yorg」)的「跳過」像素,該矩形爲width_rect寬,width_pixels爲更進一步的線,width_pixels可以寬於寬度圖片(排列字節)
(yorg*width_pixels+xorg , width_rect),
(width_pixels-width_rect , width_rect),
(width_pixels-width_rect , width_rect),
(width_pixels-width_rect , width_rect),
..
..
這種方式可以讓你的描繪過程相當通用的,簡單的,規則形狀(rects,圓圈)只需要輕微的數學預先計算這些列表。它簡化了我的形狀處理很大
但是我直接繪製位圖,而不是畫布,所以我無法幫助那部分。有效地繪製一行的原語以及從圖形中提取一行的方法應該就足夠了。
- 1. Android畫布 - 繪製矩形或矩形的圖片
- 2. 畫布矩形圖像
- 3. 圖片動畫:從一個圓形到一個矩形。 (with corner.js)
- 4. 在矩形外部填充畫布
- 5. 如何在xaml中部分填充畫布內的矩形
- 6. Opencv在圖片中畫一個矩形從來沒有顯示
- 7. 圍繞畫布移動一個矩形
- 8. 在畫布上畫圖片
- 9. 在畫布上點擊點畫一個矩形wpf
- 10. 畫布上的動畫矩形
- 11. Fabricjs將畫布的一部分複製到另一個畫布
- 12. 畫布像矩形輪旋轉矩形
- 13. 用SpriteKit在矩形中畫一個洞?
- 14. javascript mouseover矩形畫布
- 15. 繪製矩形畫布android
- 16. 繪製畫布3d矩形
- 17. Android畫布繪製矩形
- 18. 移動矩形畫布內
- 19. 畫布和繪畫圖片
- 20. 在畫布中翻譯矩形
- 21. 在T形圖表中同一畫布上的多個圖形
- 22. HTML畫布 - 在一個循環中繪製多個矩形
- 23. 畫布條形圖動畫
- 24. 畫布:清除矩形但保留內容的其餘部分
- 25. 畫布部分不能畫部分
- 26. 在畫布上畫上一部分的畫面
- 27. 如何在矩形的底部svg中畫一個圓角JS
- 28. 如何用一個移動的三角形/矩形創建畫布動畫?
- 29. 畫布中的矩形尺寸錯誤
- 30. 畫布中的比例矩形
也許Mghie在這裏的答案有幫助嗎? http://stackoverflow.com/questions/1728141/tbitmap-drawing-transparent-image-in-delphi-2009 – 2010-07-21 20:21:01
實際上並不相關 – Maysam 2010-07-22 03:04:57