procedure TransFormColor(Bmp: TBitmap; OldColor, NewColor: TColor);
var
i, j: Integer;
P: PByteArray;
Color: TColor;
R, G, B: Byte;
begin
R := GetRValue(NewColor);
G := GetGValue(NewColor);
B := GetBValue(NewColor);
Bmp.PixelFormat := pf24bit;
for j := 0 to Bmp.Height - 1 do
begin
P := Bmp.ScanLine[j];
for i := 0 to Bmp.Width - 1 do
begin
Color := RGB(P[i * 3 + 2], P[i * 3 + 1], P[i * 3]);
if Color = OldColor then
begin
P[i * 3 + 2] := R;
P[i * 3 + 1] := G;
P[i * 3] := B;
end;
end;
end;
end;
Sample:
//将 Bmp 中的黑色替换为白色
TransFormColor(Bmp, clBlack, clWhite);