function ComposeColor(Dest, Src: TRGBQuad; Percent: Integer): TRGBQuad;
begin
with Result do
begin
rgbRed := Src.rgbRed+((Dest.rgbRed-Src.rgbRed)*Percent div 256);
rgbGreen := Src.rgbGreen+((Dest.rgbGreen-Src.rgbGreen)*Percent div 256);
rgbBlue := Src.rgbBlue+((Dest.rgbBlue-Src.rgbBlue)*Percent div 256);
rgbReserved := 0;
end;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
BMP:TBitmap;
x,y:integer;
FRect:TRect;
FDst,FSrc:TRGBQuad;
begin
BMP:=TBitmap.Create;
BMP.Width:=ImgTemp.Width;
BMP.Height:=ImgTemp.Height;
FRect.Left:=0;FRect.Top:=0;
FRect.Right:=BMP.Width; FRect.Bottom:=BMP.Height;
//如果是JPEG需要对JPEG进行转换,
//BMP.Canvas.CopyRect(Rect(0,0,BMP.Width,BMP.Height),Image2.Canvas,Rect(0,0,BMP.Width,BMP.Height));
for x:=0 to BMP.Width do
for y:=0 to BMP.Height do
begin
FDst:=RGBQUAD(ImgBg.Picture.Bitmap.Canvas.Pixels[x,y]);
FSrc:=RGBQUAD(ImgTemp.Picture.Bitmap.Canvas.Pixels[x,y]);
FDst:=ComposeColor(FDst,FSrc,TrackBar1.Position);
BMP.Canvas.Pixels[x,y]:=RGB(FDst.rgbBlue,FDst.rgbGreen,FDst.rgbRed);
end;
DstImg.Canvas.CopyRect(FRect,BMP.Canvas,FRect);
BMP.Free;
end;
end.