SDL WM SetIcon

Aus DGL Wiki
Wechseln zu: Navigation, Suche

SDL_WM_SetIcon


Name

SDL_WM_SetIcon - Setzt das Icon für das Displayfenster.


Delphi-Spezifikation

procedure SDL_WM_SetIcon(icon : PSDL_Surface; mask : Uint8)


Parameter

icon Eine SDL_Surface, die das Icon enthält.
mask Ein Pointer, der auf ein Bild zeigt, das die Alphakanal-Informationen enthält.


Beschreibung

Setzt das Icon für das Displayfenster.

Durch die Angabe der Maske (mask) läßt sich die Form des Icons bestimmen, indem - abhängig von den Maskenwerten - einzelne Pixel des Icons nicht dargestellt werden, so daß an der Stelle der nicht-gezeichneten Pixel der Untergrund durchscheint. Dadurch läßt sich ein einfacher Transparenzeffekt erzielen.

Die Maske muß im MSB-Format vorliegen. Jedes Byte in der Maske steht hierin für die Transparenz-Information von 8 Pixeln im Icon. Für jede Zeile im Icon sind somit (Iconbreite in Pixel / 8 Bit) Bytes notwendig. Ist diese Zahl keine ganze Zahl, wird aufgerundet. Das 1. Bit im 1. Byte der Zeile repräsentiert die Transparenz des 1. Pixel der zugehörigen Icon-Zeile. Das 2. Bit des 1. Bytes repräsentiert das 2. Pixel der Icon-Zeile, und so weiter. Die Bits des 2. Bytes repräsentieren die Pixel 9-16 der Zeile; das 3. Byte die Pixel 17-24. Bei einer Icon-Breite von 32 Pixeln wären somit 32/8 = 4 Bytes für jede Icon-Zeile notwendig.
Ein Bit-Wert von '1' bedeutet, daß das zugehörige Pixel des Icons dargestellt wird. Analog dazu bedeutet ein Bit-Wert von '0', daß das zugehörige Pixel nicht dargestellt wird, der Hintergrund an dieser Stelle also zu sehen ist.

Wird die Maske nicht angegeben (nil), wird der Alphakanal des Bildes verwendet, sofern ein solcher vorhanden ist. Enthält icon eine Oberfläche mit ColorKey-Information (SDL_SetColorKey), wird die festgelegte transparente Farbe zur Transparenzdarstellung verwendet. Die einzelnen Verfahren lassen sich kombinieren.
Enthält das Bild weder Alphakanal noch ColorKey-Informationen und wird zudem keine Maske angegeben, wird das übergebene Icon ohne Transparenz, also als vollständig undurchsichtiges Rechteck angezeigt.

Bei Windows muss das Icon eine Größe von 32*32 Pixel besitzen.


Hinweise

Die Procedure muss vor SDL_SetVideoMode aufgerufen werden.
Der Sinn bzw. die Funktion der Maske ist nicht klar. Einige Dokumentationen geben unterschiedliche Hinweise. Sicherer ist es mit dem Colorkey (siehe Beispiel).

Beispiel

//einfaches Beispiel
SDL_WM_SetIcon(SDL_LoadBMP('icon.bmp'), 0);


//weiteres Beispiel mit Setzen des Farbschlüssels (hier lila)
var colorkey: Uint32;
    image: PSDL_Surface;
begin
  image:=SDL_LoadBMP('icon.bmp');

  colorkey:=SDL_MapRGB(image.format, 255, 0, 255);

  SDL_SetColorKey(image, SDL_SRCCOLORKEY, colorkey);              

  SDL_WM_SetIcon(image,0);
end;


Siehe auch

SDL_SetVideoMode, SDL_WM_SetCaption