약간 헤메긴 했지만. 아래와같이 쓰니깐. 델파이에서두 잘 되네요..
속도가 얼마나 빨라졌는지는 낼 회사가서 체크해 봐야겠네요...^^;;
글구. 빌더 게시판에. 델파이루 물어봐서 지성합니당..
procedure TForm1.BitBtn1Click(Sender: TObject);
var x, y : integer;
P1,p2 : pintegerarray;//PByteArray;
begin
for y := 0 to image1.Picture.Bitmap.Height - 1 do begin
p1 := image1.Picture.Bitmap.ScanLine[y];
p2 := image2.Picture.Bitmap.ScanLine[y];
for x:=0 to image1.Picture.Bitmap.Width -1 do begin
p1[x] := p1[x] and p2[x];
end;
end;
Canvas.Draw(0,0,image1.Picture.Bitmap);
end;
유영인.Chris 님이 쓰신 글 :
: Pixel을 일일히 처리하시면, 속도가 상당히 느립니다. ScanLine을 사용하시면 해결하실 수 있을것 같습니다.
:
:
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=18840
:
: 윗 게시물이 도움이 되실것 같습니다.
:
:
: 김종화 님이 쓰신 글 :
: : 아래와 같이 해서.. 이미지 마스크 처리를 코딩했는데요.. 속도가 넘 느리네요..
: : 마스크 처리하는 알고리즘이나. 컴포넌트 등. 머 좋은 방법이 없을까여? ㅠㅠ
: : 조언 부탁드립니당...
: : 참. 이건 델파이 코드구여.. 빌더코드로라두 알려주심. 제가 변환해서 쓸께요..^^;;
: :
: :
: : for iy:=0 to c_Pic_Height do begin
: : for ix:=0 to c_Pic_Width do begin
: : image_back.Canvas.Pixels[ix,iy] := image_theme.Picture.Bitmap.Canvas.Pixels[ix,iy] and
: : (image_back.Canvas.Pixels[ix,iy] OR
: : image_themeMask.Picture.Bitmap.Canvas.Pixels[ix,iy]);
: : end;
: : end;