안녕하셔요 ?
무념입니다.
일단 Igame2 란 이름의 TImage 콤포넌트에
그림이 들어있다고 하고...
고걸 Canvas 단위에서 고친다고 하면...
var
i,j: Integer;
TempR,TempB,TempG: Word;
TempColor: Byte;
begin
for i:=0 to Image2.Width-1 do for j:=0 to Image2.Height-1 do
begin
with Image2.Canvas do
begin
TempR:=GetRValue(Pixels[i,j]);
TempG:=GetGValue(Pixels[i,j]);
TempB:=GetBValue(Pixels[i,j]);
TempColor:=(TempR+TempG+TempB)div 3;
Pixels[i,j]:=RGB(TempColor,TempColor,TempColor);
end;
end;
end;
이렇게 하면 그림이 회색계통으로 바뀔겁니다.
음... 뭐 다른 방법도 많겠지만...
만약 그림의 팔레트를 위의 방법을 응용해서 바꿔주면
시간이 덜 걸리겠죠...
(물론 Full Color 그림이 아닌 256 컬러 그림의 얘기지만서도...)
도움이 되셨기를...
지금까지 무념였습니다.
P.S. 역시 Pixel 로 접근해서는 속도가 느리군요...
파일을 직접 액세스해서 바꾸거나
아님 비트맵 이미지의 메모리영역으로 직접 가서
고기서 바꾸는게 좋겠군요...
|