Mega Code Archive

 
Categories / Delphi / Graphic
 

How to highlight a bitmap

Title: How to highlight a bitmap procedure Highlight(aSource, ATarget: TBitmap; AColor: TColor); //alters ASource to ATarget by making it appear as if //looked through //colored glass as given by AColor //ASource, ATarget must have been created. //Isn't as slow as it looks. //Physics courtesy of a post by K.H. Brenner var i, j: Integer; s, t: pRGBTriple; r, g, b: byte; cl: TColor; begin cl := ColorToRGB(AColor); r := GetRValue(cl); g := GetGValue(cl); b := GetBValue(cl); aSource.PixelFormat := pf24bit; ATarget.PixelFormat := pf24bit; ATarget.Width := aSource.Width; ATarget.Height := aSource.Height; for i := 0 to aSource.Height - 1 do begin s := ASource.Scanline[i]; t := ATarget.Scanline[i]; for j := 0 to aSource.Width - 1 do begin t^.rgbtBlue := (b * s^.rgbtBlue) div 255; t^.rgbtGreen := (g * s^.rgbtGreen) div 255; t^.rgbtRed := (r * s^.rgbtRed) div 255; inc(s); inc(t); end; end; end;