全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:854
推到 Plurk!
推到 Facebook!

刷子顏色等於表單底色,但不等於表單任一像點 !

尚未結案
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-25 18:27:44 IP:210.201.xxx.xxx 未訂閱
大大們好, 開始 Delphi 新專案,在表單的 OnPaint 事件函式輸入如下程式碼: if Form1.Color = Canvas.Brush.Color then Canvas.TextOut(50, 50, 'Form1.Color 等於 Canvas.Brush.Color') else Canvas.TextOut(50, 50, 'Form1.Color 不等於 Canvas.Brush.Color'); if Canvas.Pixels[ 50, 90] = Canvas.Brush.Color then //取任一像點 Canvas.TextOut(50, 100, '像點跟刷子同顏色') else Canvas.TextOut(50, 100, '像點跟刷子不同顏色'); 執行時在表單輸出為: Form1.Color 等於 Canvas.Brush.Color 像點跟刷子不同顏色 以上結果實在太不合理,因為程式一開始時,刷子顏色已預設是表單底色, 那麼表單任一像點的顏色都應該跟刷子顏色一樣才對,可是輸出結果卻矛盾。 那位大大能替我解惑? 先感謝了
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-25 18:50:49 IP:210.201.xxx.xxx 未訂閱
補充一下 以上程式 Form1.color 是用 Delphi 預設的 clBtnFace, 但如果 Form1.color 改為 clWhite, clAqua, clFuchsia, clBlue, clYellow, clLime, clRed, clBlack 任一, 則輸出結果為:     Form1.Color 等於 Canvas.Brush.Color     像點跟刷子同顏色 Form1.color 若設為這七顏色以外的顏色,輸出結果就一定是     Form1.Color 等於 Canvas.Brush.Color     像點跟刷子不同顏色 我覺得這種結果很奇怪
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-25 21:31:43 IP:61.31.xxx.xxx 未訂閱
可能原因: 1. 絕對顏色的問題。難道您沒發現可以相同的均為絕對顏色 如 RGB(255,255,255) RGB(0,255,255) RGB(0,255,0) ... 會有顏色誤差的問題。 2. Canvas.Pixels 事實上是用 GetPixel 這個 API 在 Help有說明僅支持 RGB 16Bit 非 24 or 32 Bit 個人認為原因,傾向於第一個原因。
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-26 20:22:24 IP:210.201.xxx.xxx 未訂閱
謝謝wameng 大大解答, 最後我解決這個問題的辨法只能 var c : TColor; ... c := Canvas.Pixels[0,0]; 這樣任何會踫到 [0,0] 的繪圖函式,都必須小心使用囉。
系統時間:2024-07-05 9:37:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!