1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| procedure CursorToBitmap(CursorIndex:TCursor;var ABmp:TBitmap);
var hCursor: THandle;
begin
ABmp.Width := 32;
ABmp.Height := 32;
ABmp.PixelFormat := pf24bit; // pour éviter de travailler avec les palettes
hCursor := Screen.Cursors[CursorIndex];
DrawIconEx(ABmp.Canvas.Handle, 0,0, hCursor, 32,32, 0,0, DI_NORMAL);
// Remplissage du curseur depuis "l'extérieur" de telle façon qu'un curseur blanc
// apparaisse blanc. on suppose que le coin supérieur droit sera le point de départ du remplissage
// On suppose que RGB(250,250,250) sera la couleur de "transparence".
ABmp.Canvas.Brush.Color := RGB(250,250,250);
ABmp.Canvas.FloodFill(31,0, clWhite, fsSurface);
// Le coin supérieur gauche de certains curseurs est "bloqué" contre le floodfill
ABmp.Canvas.FloodFill(0,0, clWhite, fsSurface);
end; |
Partager