안녕하세요..?
칼라 사진을 흑백으로 바꾸려구 하거든요...
제가 코딩한 건 아래와 같습니다..
--------------------------------------------
var
Form1: TForm1;
x, y:integer;
red, green, blue, black, color:TColor;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
image2.Height:=image1.Height;
image2.Width:=image1.Width;
for x:=0 to image1.Height-1 do
begin
for y:=0 to image1.Width-1 do
begin
color:=image1.Canvas.Pixels[x,y];
red:=color And $0000FF;
green:=(color And $00FF00) Shr 8;
blue:=(color And $FF0000) Shr 16;
black:=(red+green+blue) Div 3;
image2.Canvas.Pixels[x,y] := black * $010101;
end;
end;
end;
end.
-----------------------------------------------
그리고 에러는 아래와 같이 나고요..
-----------------------------------------------
[Warning] Unit1.pas(34): For loop control
variable must be simple local variable
[Warning] Unit1.pas(36): For loop control
variable must be simple local variable
----------------------------------------------
여기서 34, 36번째줄은 For문이 시작되는 부분이거든요..
변수 선언할 때 데이터형을 integer, double, TCanvas,
TColor 모두 해봤는데..계속 에러납니다...ㅠ.ㅠ...
에러 뜻도 이해를 못하겠구요...
뭐가 잘못된건지..쉽게 설명해주시면..감사..^^..
그럼 좋은 하루 되세요..
꾸벅~
아래건 퍼온겁니다...
Name Black}{ole [blackhole@nilex.co.kr]
Subject [팁] 컬러그림을 흑백으로..
컬러이미지를 흑백이미지로..
var
GrayPal: TMaxLogPalette;
i: Integer;
begin
Image1.Picture.LoadFromFile( 'sample.bmp' );
for i := 0 to 255 do
with GrayPal.palPalEntry[i] do
begin
peRed := i;
peGreen := i;
peBlue := i;
peFlags := 0;
end;
GrayPal.palVersion := $0300;
GrayPal.palNumEntries := 256;
Image2.Picture.Bitmap.PixelFormat := pf8bit;
Image2.Picture.Bitmap.Palette := CreatePalette( PLogPalette(@GrayPal)^ );
Image2.Picture.Bitmap.Width := Image1.Picture.Bitmap.Width;
Image2.Picture.Bitmap.Height := Image1.Picture.Bitmap.Height;
Image2.Picture.Bitmap.Canvas.Draw( 0, 0, Image1.Picture.Bitmap );
end;