能否用Canvas.LineTo畫空心的線段 |
答題得分者是:sryang
|
Nelson Lo
一般會員 發表:35 回覆:87 積分:24 註冊:2003-04-04 發送簡訊給我 |
請問各位先進,
小弟有需求用Canvas.LineTo()畫一條空心的線, 也就是只有邊框的線段。 因為是任意角度的線段,所以不適合用Canvas.Rectangle()或是Canvas.RoundRect()畫, 且兩頭要需要是圓形,所以也不適合用Canvas.Polygon()畫。 有試過使用 BeginPath(Bitmap.Canvas.Handle); Bitmap.Canvas.Pen.Width:=5; Bitmap.Canvas.MoveTo(10, 110); Bitmap.Canvas.LineTo(280,110); EndPath(Bitmap.Canvas.Handle); StrokePath(Bitmap.Canvas.Handle); 但是似乎只支援Canvas.TextOut或是Canvas.Rectangle等形狀, 還請各位先進提供一下意見或是其他的方式, 使用的語言為Delphi或BCB 謝謝感恩。 |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
Nelson Lo
一般會員 發表:35 回覆:87 積分:24 註冊:2003-04-04 發送簡訊給我 |
感謝sryang大提供的意見和思考的方向。
其實類似的方法我也有想過, 就是先用pmNotXor畫一條線, 然後直徑減少2的pixel之後, 再以pmNotXor 畫一次, 這樣應該就會出現以1個pixel環繞的中空線段 (應該是吧), 但是這樣等於每次都要畫2次, 然後在消除這條線的時候又要再畫2次。 但是因為我是用在OnMouseMove()中, 需要跟著耍移動時快速的不停的重畫。 因為有做圖像放大的功能, 小大偷懶是以直接把Image的長寬直接放大來實現。 如果Image的尺寸很大的時候, 就會產生LAG的現象, 所以才想尋求更快速的方法, 看看能否畫一次就完成, 這樣一畫一消除就只要畫2次就完成了。
編輯記錄
Nelson Lo 重新編輯於 2017-09-21 09:13:30, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |