procedure TForm1.Button1Click(Sender: TObject);
var
i, j : integer;
P, P2 : PByteArray;
begin
for i := 0 to Image1.Height - 1 do begin
P := Image1.Picture.Bitmap.ScanLine[i];
P2 := Image2.Picture.Bitmap.ScanLine[i];
for j := 0 to Image1.Width do begin
if P2[j] = RGB(42, 47, 68) then
P[j] := C_239;
if P2[j] = RGB(61, 66, 87) then
P[j] := C_240;
if P2[j] = RGB(81, 86, 107) then
P[j] := C_241;
if P2[j] = RGB(100, 105, 126) then
P[j] := C_242;
if P2[j] = RGB(120, 125, 145) then
P[j] := C_243;
end;
end;
Image1.Refresh;
end;
================================
scanline 에서 RGB로 값을 비교하고 쓰려합니다.
하려고 하는것은 같은 두개의 그림을 놓고 한쪽그림에서 특정색상이 있는 곳에 색상을 바꾸어서 다른그림에 보여주는 것입니다.
PRGBArray란것도 쓰는거 같은데 컴파일하면 에러가 나거든요.
근데 값이 RGB값이 아닌거 같은데 사용하려면 어떻게 해야 하는지 알려주시면 감사하겠습니다.
질문만 봐서는 정확한 오류와 의도를 간파하지 못하겠구여..^^;
일단 RGB함수는 TColor 형을 반환하기 때문에
아마도 PRGBArray 라는 변수는 TColor 형이 아닐까 싶네여.
TColor 형 변수는 TColor 형의 객체에 그대로 대입이 가능합니다.
예를 들면
var
RGBColor : TColor;
begin
RGBColor := RGB(0, 0, 255);
with Canvas do
begin
Brush.Color := RGBColor;
....
머 이런형태가 되겠지여..
그럼~ 참고하시고 즐건 프로그래밍 하시길~~