如何在Form上畫線(要能在所有物件的最上方) |
尚未結案
|
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
請問各位大大,如何在Form上面畫線要能覆蓋所有的元件,如Edit、Panel、Memo...等可視元件,也就是要在Form的最上方。
畫線的程式
Canvas.MoveTo(X,Y);
Canvas.LineTo(X,Y); =========================================
程式有問題並不可怕,最怕是不知問題出在那
不知問題在那不可怕,更怕是不知如何問問題
寫程式要從最簡單的開始
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
另一種觀點,直接在螢幕上作畫
procedure TForm1.Button1Click(Sender: TObject); var Hwn : HDC; begin Hwn := GetDC(0); Try Windows.MoveToEx(Hwn, Left 2, Top 2, nil); Windows.LineTo(Hwn,Left 100,Top 100); Finally ReleaseDC(0,Hwn); end; end;建議使用 hahalin 兄 的方式 不過透空部分要自行思量。 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
引言: 用tpaintbox來作,在她的onpaint事件去canvas畫線 把這個tpaintbox bringtofronthahalin大大我已經把tpaintbox bringtofront,但是還是會被其他元件蓋掉。 ========================================= 程式有問題並不可怕,最怕是不知問題出在那 不知問題在那不可怕,更怕是不知如何問問題 寫程式要從最簡單的開始
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
procedure WMPaint(var msg:TMessage);message WM_PAINT; ... ... procedure TForm1.WMPaint(var msg:TMessage); var dc:THandle; fCanvas:TCanvas; begin dc:=GetWindowDC(Handle); fCanvas:=TCanvas.Create; With fCanvas do begin Handle:=dc; MoveTo(0,0); LineTo(200,200); Free; end; ReleaseDC(Handle,dc); end; |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
同意 jest0024 兄的作法。 不知 jest0024 兄,有無發現。
原 MEMO 或 EDIT 內容會顯示空白。
主要是少了 inherited
procedure TForm1.WMPaint(var msg:TMessage); var dc:THandle; fCanvas:TCanvas; begin inherited; dc:=GetWindowDC(Handle ...不過既使是這樣,在編輯時也會被清掉一些。 改善方式,可改由透過 Application.OnMessage if Msg.message=WM_PAINT then 處理。 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ |
shinjie
資深會員 發表:12 回覆:275 積分:287 註冊:2003-03-19 發送簡訊給我 |
謝謝各位大大的幫忙,已有好的解法了。
採用jest0024大大的方法,再加上wameng大大的inherited與Application.OnMessage,已經可以達到需求了。
我在WMPaint與Application.OnMessage都有寫jest0024的方法,這樣比較符合想要的結果,又不會蓋掉原本元件的內容。
因為jest0024大大的方法比較符合,所以分數就給jest0024大大了,也謝謝其他大大的幫忙。
wameng大大的Windows Paint 其實也可以達到我的需求,但我是想在Form上面畫線,額外感謝wameng大大。 =========================================
程式有問題並不可怕,最怕是不知問題出在那
不知問題在那不可怕,更怕是不知如何問問題
寫程式要從最簡單的開始
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。 得之;我幸。不得;我命。 |
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |