繪圖軟體的選擇元件功能 |
尚未結案
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
如圖一所示.是用photoimpact做的.以一個長方形跟一個文字元件來舉例.
當我滑鼠點選文字時.此時文字會出現被選取到的八個小方框在周圍.
選擇長方形時也一樣.當點選其一的元件時.還可以做修改或內容資料設定等等.
目前還是指開啟一個新畫面.如果開啟很多畫面.很多畫面裡面又有很多元件. 問題1:
假設我畫面開好幾個.在每個畫面都有新增長方形或文字的元件.
如果我將畫面建立一個類別.長方形一個類別.文字一個.每元件各一個類別.
該用什麼方法去知道目前選擇哪個畫面的哪個元件? 問題2:
如果用指標去指向元件.那該怎麼指到正確的元件?
用動態增加指標方式嗎?那如果一直故意新增刪除那不是會有問題嗎? 問題3:
有前輩能提供簡單點的範例嗎? 圖一:
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
pireer 您好:
引言:問題1: 假設我畫面開好幾個.在每個畫面都有新增長方形或文字的元件. 如果我將畫面建立一個類別.長方形一個類別.文字一個.每元件各一個類別. 該用什麼方法去知道目前選擇哪個畫面的哪個元件? 問題2: 如果用指標去指向元件.那該怎麼指到正確的元件? 用動態增加指標方式嗎?那如果一直故意新增刪除那不是會有問題嗎? 問題3: 有前輩能提供簡單點的範例嗎?1. 您可以透過各個元件的 OnClick 或是 OnMouseDown、OnMouseUp 這樣的滑鼠事件來探知何者被圈選了? 2. 不是很瞭解您第二個問題的前半段是指甚麼?後半段所指的問題就要看程式的寫作是否嚴謹了?如果程式各個處理流程都考慮得很周詳,那麼動態的任意增刪元件應該不成問題的。 3. 您的需求並不是描述得很明確,難以提供範例。 7 天天敲鍵盤 v 時時按滑鼠 8 |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
引言: 1. 您可以透過各個元件的 OnClick 或是 OnMouseDown、OnMouseUp 這樣的滑鼠事件來探知何者被圈選了? 2. 不是很瞭解您第二個問題的前半段是指甚麼?後半段所指的問題就要看程式的寫作是否嚴謹了?如果程式各個處理流程都考慮得很周詳,那麼動態的任意增刪元件應該不成問題的。 3. 您的需求並不是描述得很明確,難以提供範例。 7 天天敲鍵盤 v 時時按滑鼠 8先感謝RedSnow前輩的回覆. 關於第一個問題.如第一樓的敘述.長方形與文字都是用"畫"的方式畫出來. 目前想到是用滑鼠移到範圍的座標內.並且按下左鍵.就表示選取到.. 第二個問題是. 延續第一個問題.如果我點選兩下長方形.則會叫出設定屬性畫面. 那必須要有個方法儲存這些資料.目前是想到用類別去儲存資料. 但長方形有可能在一個畫面上有很多個.要怎麼準確知道目前點選的長方形. 它的類別是哪個?所以才說如果用指標去指類別.怎麼才能知道指向的類別是否是選取到的長方形的類別. 第三個問題是請前輩能做個範例.大約如同畫面中繪圖軟體的功能. |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
pireer 您好: 您這次的描述明確多了,我原先並不知道您是用 "直接繪製" 在畫布上的方式來處理您所說的那些元件,因此未能瞭解您實際的問題。 如果是這樣子的話,我建議您換個方式來處理,您可以用動態的方式建立 Image 物件,無論是矩形、文字....等,都以 Image 物件來存放內容,這樣子您會比較好處理與調整這些物件,例如:調整大小、位置、顏色、字樣....等等,當您要儲存整張畫布時,再將各個動態建立的 Image 物件與當作底圖的 Image 內容合併成一張全圖,這樣子會比較方便些。 如果您可以接受前述的方式,那麼您可以先試著寫寫看,您在第一篇提到使用八個小方框,以及建立文字圖像的處理方式,可以參考下列這一篇,該篇裡邊我另外有列出幾篇相關討論的連結:
用TImage實作文字方塊
http://delphi.ktop.com.tw/topic.php?topic_id=68832
您先參考看看,若有問題的話,我們再來討論好了。 7 天天敲鍵盤 v 時時按滑鼠 8
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
pireer 您好:
引言:如果要達成下圖畫面中出現的長方形文字.且只能直接在FORM上用畫的方式表達. 動作有八個小方框.改變大小.移動長方形文字.且雙擊此長方形文字要跳出該屬性設定畫面.屬性設定畫面的資料還要儲存起來. 不太能適用於用IMAGES去做. 也就是說只能用Canvas去達到photoimpact畫圖.文字功能. 目前沒什麼方向..您可以參考我在前一篇所提供那一篇連結內的討論,使用 Memo 物件來做輸入及調整大小時的處理,確認文字的輸入或修改後再製作成 Image 物件來顯示,文字圖片被雙擊後,再將 Image 暫時隱藏起來,將前述的 Memo 物件及調整方框的八個 DragSpot 顯示出來,以便作編修時的處理。 或者您也可以仍使用 Image 物件來做文字框的調整,只不過您必須要在文字框被雙擊時,另外在那個 Image 物件加上繪製邊框的動作就是了。 至於您所描述的 "屬性設定畫面的資料還要儲存起來" 這個部份,這都是技術性的問題,可以處理的方法也很多,一般的圖檔並不包含這些資料,您可以自己訂定一套檔案格式 (或採用其它著名程式所制定的現成格式) 來儲存那些資訊,然後在您的程式中的儲存動作中,可以讓使用者選擇將前述的屬性資料儲存成特定的格式檔案,或者是儲存成一般的圖檔。 7 天天敲鍵盤 v 時時按滑鼠 8 |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
pireer 您好:
引言:但目前我在"畫"長方形或文字方面. 等於是說畫面上出現的全部只能用畫的. 不能用任何Component達成.. 所以第二個圖完全要用畫的.我不太理解這一段的說明,不能使用任何元件來達成的意思是某種限制嗎?還是您不想透過元件來處理? 引言:目前卡在除了畫出第二圖那樣之外. 如果一個畫面有兩個圖二這樣的圖. 那在MouseDown事件怎麼分辨現在點選到的是哪一個. 以及移動畫出來的圖.與大小可縮放之類..如果可以使用元件來處理,在 OnMouseDown 事件中可以透過傳入的 Sender 參數來識別觸發事件的來源,如果要處理的對象全部都是畫在同一張畫布上,那麼可能就較難了,或許可以建立一個對應的結構資料陣列,裡邊存放各個處理對象的相關資訊,例如所在位置、大小、層次編號....等等,但是處理起來可能會有些麻煩,尤其是處理對象有重疊且又有透明底色的現象時。 7 天天敲鍵盤 v 時時按滑鼠 8 |
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
引言: 我不太理解這一段的說明,不能使用任何元件來達成的意思是某種限制嗎?還是您不想透過元件來處理是限制...被限制不能使用任何元件達成.只能用畫的方式表達. 引言: 如果可以使用元件來處理,在 OnMouseDown 事件中可以透過傳入的 Sender 參數來識別觸發事件的來源,如果要處理的對象全部都是畫在同一張畫布上,那麼可能就較難了,或許可以建立一個對應的結構資料陣列,裡邊存放各個處理對象的相關資訊,例如所在位置、大小、層次編號....等等,但是處理起來可能會有些麻煩,尤其是處理對象有重疊且又有透明底色的現象時。目前想到用類別格式去儲存相關資訊.但... 後續一堆問題...這就是一直頭痛的地方.. |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
pireer 您好:
引言:是限制...被限制不能使用任何元件達成.只能用畫的方式表達.原來是這麼回事啊~這種限制似乎有點奇怪,不過既然是限制,那我也只能祝您好運囉。 引言:目前想到用類別格式去儲存相關資訊.但... 後續一堆問題...這就是一直頭痛的地方..只要您能先釐清頭緒、確認處理方向,後續的問題應該就不難解決了,以您前一個問題來講,您可以在 OnMouseDown 事件中,以迴圈檢查各個 "處理對象" 記錄資料中 Rect 值 (上、下、左、右) 的方式來判定被圈選的對象,但是就如我前一篇所提及的,若有處理對象處於重疊的狀態時,可能就會比較麻煩些了,另外對於移動、調整大小等處理的話,可能需要有一塊 Buffer 記錄下底圖的內容 (Image 原圖的副本),在被圈選的對象移動位置或調整大小時,先恢復該對象所覆蓋的底圖部分,然後再於新的位置重新繪製該對象,當然啦~隨著處理對象與處理效果的不同,也應該運用不同的技巧來處理。 其實若是沒有您所描述的限制,或者是限制範圍仍有彈性的話,您可以考慮採用提供圖層 (Layer) 功能的畫布元件 (例如 Graphics32) 來代替原有的 Image 元件,這樣子真的會方便多了。 7 天天敲鍵盤 v 時時按滑鼠 8 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |