Canvas 取點 或其他替代方式 |
答題得分者是:jow
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
<!--[if gte mso 9]><xml>
Begin TextCanvas.Canvas.Font.Size := FontSize; TextCanvas.Canvas.Font.Color := RGB(0,0,0); TextCanvas.Canvas.Handle := GetDC(0); H := TextCanvas.Canvas.TextHeight(TextString); HexW := (W div 8) 1; HexW := (W div 8); If H Mod 8 > 0 Then Begin End Else Begin End; // For I := 0 To HexH * 8 -1 do Begin For J := 0 To HexW * 8 -1 do Begin FontCode := FontCode '0'; FontCode := FontCode '1'; If Length(FontCode) = 8 Then Begin FontCode := ''; End; End; 1Form2 、取點的速度非常的慢以上三點,小的真的試了好久,只好上來求各位高手給予賜教 |
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
rick060
高階會員 發表:2 回覆:112 積分:217 註冊:2009-11-17 發送簡訊給我 |
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
===================引 用 rick060 文 章=================== 1. 會顯示在畫面是 因為TextCanvas.Canvas.Handle:=GetDC(0); 它不是 form. 要搞清楚 您好,这個部分我是知道的。之前是採用了TCanvas的關係,所以改用TBitmap時,忘記拿掉了。所以這個顯示出來的問題解決了。 2.input ? output ? 我主要的是要取得下面這個東西 FontCode := ''; ConverFontCode := ''; If TextCanvas.Canvas.Pixels[J,I] = RGB(255,255,255) Then Begin End Else Begin End; A := A FontCode; End; 3.哪邊慢 這一段執行的非常慢,小弟不曉得除了以這樣的取點方式之外,還有沒有更快的方法 |
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
ckc5168
一般會員 發表:3 回覆:10 積分:2 註冊:2002-08-30 發送簡訊給我 |
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
[code delphi] procedure TfrmMain.Button1Click(Sender: TObject); const XXX = 'X Y Z'; SSS: array[Boolean] of string = (' ','@'); var I,J: Integer; S: string; b: TBitmap; L: TStringList; begin B := TBitmap.Create; try with B,Canvas do begin Font.Size := 12; Font.Name := 'ARIAL'; Font.Color := clBlack; Brush.Color := clWhite; Width := TextWidth(XXX); Height := TextHeight(XXX); TextOut(0,0,XXX); end; //開始處理文字字串的部分資訊 L := TStringList.Create; try with B,Canvas do begin for I := 0 to Height-1 do begin for J := 0 to Width-1 do S := S SSS[Pixels[J,I]<>Brush.Color]; L.Add(S); S := ''; end; end; ShowMessage(L.Text); finally FreeAndNil(L); end; finally FreeAndNil(B); end; end; [/code] |
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
[code delphi] procedure TfrmMain.SHOW(THE_PIXEL_FORMAT: TPixelFormat); const XXX = 'X Y Z'; var I,J: Integer; S: string; b: TBitmap; L: TStringList; begin B := TBitmap.Create; try with B,Canvas do begin // PixelFormat := THE_PIXEL_FORMAT; // Font.Size := 12; Font.Name := 'ARIAL'; Font.Color := clBlack; Brush.Color := clWhite; Width := TextWidth(XXX); Height := TextHeight(XXX); TextOut(0,0,XXX); end; //開始處理文字字串的部分資訊 L := TStringList.Create; try with B,Canvas do begin for I := 0 to Height-1 do begin for J := 0 to Width-1 do begin if Pixels[J,I]=Font.Color then S := S '@' else if Pixels[J,I]=Brush.Color then S := S ' ' else S := S '。'; end; L.Add(S); S := ''; end; end; ShowMessage(L.Text); finally FreeAndNil(L); end; finally FreeAndNil(B); end; end; procedure TfrmMain.Button1Click(Sender: TObject); begin SHOW(pf1bit); SHOW(pf24bit); end; [/code]
編輯記錄
jow 重新編輯於 2011-06-03 02:30:32, 註解 無‧
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
|
deemster
一般會員 發表:4 回覆:15 積分:3 註冊:2005-01-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |