How to change colours in a 16 colour bitmap (Views: 30)
Problem/Question/Abstract: How to change colors in a 16 colour bitmap Answer: I found the solution which works best, although the final version will have the colors computed rather than hard coded. The bitmap I am using actually only uses the first 4 colors in the palette for shades of grey. procedure TForm1.SetWallpaperPalette; type RGBQUAD = packed record rgbBlue: Byte; rgbGreen: Byte; rgbRed: Byte; rgbReserved: Byte; end; var NewColors: array[1..4] of RGBQUAD; begin FillChar(NewColors, SizeOf(NewColors), 0); with NewColors[1] do begin rgbBlue := 0; rgbGreen := $C6; rgbRed := $C6; end; with NewColors[2] do begin rgbBlue := 0; rgbGreen := $CE; rgbRed := $CE; end; with NewColors[3] do begin rgbBlue := 0; rgbGreen := $D6; rgbRed := $D6; end; with NewColors[4] do begin rgbBlue := 0; rgbGreen := $DE; rgbRed := $DE; end; if Assigned(SpeedBar1.Wallpaper.Bitmap) then SetDibColorTable(SpeedBar1.Wallpaper.Bitmap.Canvas.Handle, 0, 4, NewColors); end; |