日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在Panel上绘图的实现

發布時間:2024/4/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Panel上绘图的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???? 近期制作了FDS的一個建模工具,由于知識有限,做出的效果是2D的。昨天上課的時候看老師畫一個長方體,突然想到,為什么不給普通的2D圖形加畫上幾條直線,就能實現2D圖形的3D視覺效果呢?于是回來馬上做了嘗試,果然,效果很好,非常滿意。但是把測試程序代碼移植到FDS建模工具上的時候出現問題了:Panel沒有Canvas屬性,也不能說沒有,實際上在TPanel的實現源碼里有Canvas屬性,不過是Protected不允許外部訪問。怎么辦?簡單思考了一下,有這么幾個方向:

一、把Panel設置成透明的,在Form的Canvas上繪畫圖形

二、在Panel里面加一個有Canvas屬性的組件,然后在那上面繪圖

三、想辦法在Panel本身上實現畫圖的方法

通過查資料,改源程序代碼,發現方案一,畫出的圖形總是被Panel本身遮擋(這是由于我程序本身的需要,Panel里面也要套一層Panel),沒有找到好的解決辦法。

方案二:在Panel里面加了一個Image組件,但引發了更多問題:由于組件是動態生成了,產生了比如如何確定在哪個組件添加的Image,另外Image擋住了Panel的事件響應。總之也是沒有很好的解決。

走了很多很多彎路后才最后走到第三步。最后在臺灣的一個Delphi論壇上找到了類似的問題:如何在Panel組件上定點寫字http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=70988源碼是C++的,我以前學過一點C++就根據自己的理解轉換成了Delphi的,可能有不對的地方,但沒想到一運行居然成功了!

uses Math;procedure TForm1.pnl1Click(Sender: TObject); var Panel:TPanel; PanelCanvas:TControlCanvas; beginPanelCanvas:=TControlCanvas.Create;PanelCanvas.Control:=pnl5;Panel:=sender as TPanel;with PanelCanvas dobeginpen.Color:=clGreen;MoveTo(Panel.Left,Panel.Top);LineTo(Panel.left+round(Panel.Height/sqr(2)),Panel.top-round(Panel.Height/sqr(2)));LineTo(Panel.left+Panel.Width+round(Panel.Height/sqr(2)),Panel.top-round(Panel.Height/sqr(2)));LineTo(Panel.left+Panel.Width,Panel.top);MoveTo(Panel.Left+Panel.Width,Panel.Top+Panel.Height);LineTo(Panel.left+Panel.Width+round(Panel.Height/sqr(2)),Panel.top+Panel.Height-round(Panel.Height/sqr(2)));LineTo(Panel.left+Panel.Width+round(Panel.Height/sqr(2)),Panel.top-round(Panel.Height/sqr(2)));end;PanelCanvas.Free; end;

?

成功的關鍵在TControlCanvas的使用,TControlCanvas的Control屬性使得Panel的Canvas屬性可以被訪問使用。

看看TControlCanvas的Control屬性說明:Specifies the control associated with the control canvas object.

轉載于:https://www.cnblogs.com/delphi7456/archive/2010/11/17/1880115.html

總結

以上是生活随笔為你收集整理的在Panel上绘图的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。