線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2174
推到 Plurk!
推到 Facebook!

畫線

尚未結案
wsxcv123
一般會員


發表:36
回覆:27
積分:12
註冊:2004-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-10 02:42:45 IP:218.168.xxx.xxx 未訂閱
大大好    小弟想做一個像小畫家的畫線工能 線移動到 panel 的時候不會被 panel 蓋到...   兩條線重疊且交叉要怎麼處理ㄚ< > 如果用透明的 > 還不太懂要怎麼做說 < > 感謝大大
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-10 11:19:20 IP:220.130.xxx.xxx 未訂閱
你要把你的程式碼寫在 OnPaint() 事件裡面, 這樣的話,即使被其他的視窗擋到又離開,程式會自動再把他畫回去. 其他你要的功能,就是要做一個陣列,紀錄User所曾經畫過的線條, 包含起跟止的位置,這樣的話,也可以有畫錯復原的功能. (原理就是讀取這個陣列,在畫布上重新一一的畫回去,寫在 OnPaint()裡面), 至於程式碼,你就自己去慢慢去寫了.在 BCB的範例那個目錄內,應該有這個程式,你去找一下,拿那個來修改會比較快.
wsxcv123
一般會員


發表:36
回覆:27
積分:12
註冊:2004-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-10 13:34:35 IP:61.222.xxx.xxx 未訂閱
海星大大你好    你提的方法我之前有試過了。 在Form 方一個 paintbox, 在上面畫。 之後因為我會用到 TChart。 我畫的線無法移到TChart 的上面  後來我試畫在 Label 上,但還是有一樣的問題  當我移動 > > 謝謝
海星
高階會員


發表:41
回覆:217
積分:106
註冊:2003-01-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-11 11:56:57 IP:220.130.xxx.xxx 未訂閱
那個比較快的解決方法是放一個 TImage,另一個是 PaintBox PaintBox 就是視窗上真正看到的畫布, Image1 是隱藏在程式碼後面的畫布,也就是要設 Image1->Visibl = false; 同樣的 Chat1->Visibl = false; 然後在背景把 Chat1的圖案完整 Copy 到 Image1,然後再把其他的線條 也畫到 Image1 上,最後在 PaintBox 的 OnPaint()事件內寫 PaintBox->Canvas->Draw( 0,0, Image1->Picture->Graphic ); 這樣就大功告成了. 另外建議你的曲線圖自己去畫啦~~不要去用 TChat,那個確實超級方便, 但非常沒有彈性,例如你放兩個 TChat 併排在一起你就知道了,根本就 沒辦法對齊兩張圖的原始軸,他會隨著Y軸的文字內容把你的圖做縮放, 還有其他自己想要的意思畫的圖,都沒辦法顯示,只能照現成的。 我後來都是直接自己去畫曲線圖,看起來好像會是大工程,實際上寫起來 也不怎麼困難,大概2~3個晚上"看電視的時間"就可以完工,寫好後,其他 有雷同的程式都是套用寫好的程式碼就行了,一舉兩得。 還有你要在 Chat 上畫什麼線條或什麼圖型也都可以輕鬆的解決了。 (例如在某個點上標示▼箭頭圖案)
wsxcv123
一般會員


發表:36
回覆:27
積分:12
註冊:2004-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-12 17:04:30 IP:61.222.xxx.xxx 未訂閱
你好 在我的程式 user 可以自己產生 TChart 加 line. TChart 提供的工能我會用到(如:3D,ZOOM) 所以我想做一個 Line component. Line 要可以移動,resize. 我現在的作法是產生新的 component, inherits TCustomControl 之後在對 line component 的 形狀做切割.
系統時間:2024-04-19 22:38:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!