關於繪出封閉區域後填色 |
答題得分者是:richtop
|
adward
一般會員 發表:24 回覆:19 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
adward
一般會員 發表:24 回覆:19 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
1666362
初階會員 發表:66 回覆:124 積分:43 註冊:2004-07-07 發送簡訊給我 |
|
adward
一般會員 發表:24 回覆:19 積分:8 註冊:2004-09-06 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
adward 您好: 關於您所謂的填色需求不知是人為手動或由程式自行判斷? 1) 人為操作
您可利用滑鼠點選區域內部,
//--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Image1->Picture->Bitmap->Canvas->Brush->Color = clBlue; Image1->Picture->Bitmap->Canvas->FloodFill(X,Y,clBlack,fsBorder); } //---------------------------------------------------------------------------2) 程式自動執行 這裡提供一個"偷吃步"的方法: 前提是您的圖形必須是二值化的圖(轉成Bitmap格式),或者說是僅有兩個顏色;還有假設圖形四個角落至少有一個不在封閉區域內部。 通常判斷上比較麻煩的是:封閉區域內外是一樣的顏色,只有區域邊界是另一種顏色。 所以我用了個耍賴的方法: 先將區域外塗成第三種顏色,於是這時只有白色是區域內部,因此當掃描到白色點時,就可以利用FloodFill(.)填滿該封閉區域;完成全圖掃描後,再將區域外部填成白色即可。 至於如果想要填入不同的顏色,就請自行思考修改一下囉! < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19139650&CC=428050"> void scan2D(TImage *image, TColor fillColor) { Byte **ptr; int r, g, b, index; image->Picture->Bitmap->PixelFormat = pf24bit; // 視覺上維持白色感覺 image->Picture->Bitmap->Canvas->Brush->Color = (TColor)RGB(252,253,254); image->Picture->Bitmap->Canvas->FloodFill(0,0,clBlack,fsBorder); ptr = new Byte*[image->Picture->Height]; for (int k=0; kRichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### 發表人 - richtop 於 2004/12/08 16:15:37 |
rogan321
高階會員 發表:21 回覆:307 積分:200 註冊:2003-05-15 發送簡訊給我 |
|
wen142
一般會員 發表:22 回覆:27 積分:14 註冊:2004-06-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |