SDL WM SetIcon: Unterschied zwischen den Versionen
I0n0s (Diskussion | Beiträge) K (→Delphi-Spezifikation: Parameter der SDL.pas angepasst) |
K (Daß -> Dass) |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= SDL_WM_SetIcon= | = SDL_WM_SetIcon= | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
− | '''SDL_WM_SetIcon''' - Setzt das Icon für das Displayfenster | + | '''SDL_WM_SetIcon''' - Setzt das Icon für das Displayfenster. |
+ | |||
+ | |||
− | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''SDL_WM_SetIcon'''(''icon'' : PSDL_Surface; ''mask'' : Uint8) | procedure '''SDL_WM_SetIcon'''(''icon'' : PSDL_Surface; ''mask'' : Uint8) | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
Zeile 15: | Zeile 18: | ||
{| border="1" rules="all" | {| border="1" rules="all" | ||
! ''icon'' | ! ''icon'' | ||
− | | Eine [[SDL_Surface]] die das Icon enthält | + | | Eine [[SDL_Surface]], die das Icon enthält. |
|- | |- | ||
! ''mask'' | ! ''mask'' | ||
− | | | + | | Ein Pointer, der auf ein Bild zeigt, das die Alphakanal-Informationen enthält. |
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
− | Setzt das Icon für das Displayfenster | + | Setzt das Icon für das Displayfenster.<br> |
− | + | ||
− | + | 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 dass 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.<br> | |
− | + | Ein Bit-Wert von '1' bedeutet, dass das zugehörige Pixel des Icons dargestellt wird. Analog dazu bedeutet ein Bit-Wert von '0', dass das zugehörige Pixel nicht dargestellt wird, der Hintergrund an dieser Stelle also zu sehen ist.<br> | |
+ | |||
+ | 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.<br> | ||
+ | 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 == | == Hinweise == | ||
Die Procedure muss vor [[SDL_SetVideoMode]] aufgerufen werden. | Die Procedure muss vor [[SDL_SetVideoMode]] aufgerufen werden. | ||
Zeile 39: | Zeile 49: | ||
== Beispiel == | == Beispiel == | ||
− | <pascal>//einfaches Beispiel | + | <source lang="pascal">//einfaches Beispiel |
− | SDL_WM_SetIcon(SDL_LoadBMP('icon.bmp'), 0);</ | + | SDL_WM_SetIcon(SDL_LoadBMP('icon.bmp'), 0);</source> |
<br> | <br> | ||
− | <pascal>//weiteres Beispiel mit Setzen des Farbschlüssels (hier lila) | + | <source lang="pascal">//weiteres Beispiel mit Setzen des Farbschlüssels (hier lila) |
var colorkey: Uint32; | var colorkey: Uint32; | ||
image: PSDL_Surface; | image: PSDL_Surface; | ||
Zeile 53: | Zeile 63: | ||
SDL_WM_SetIcon(image,0); | SDL_WM_SetIcon(image,0); | ||
− | end;</ | + | end;</source> |
+ | |||
+ | |||
− | |||
== Siehe auch == | == Siehe auch == |
Aktuelle Version vom 18. März 2012, 16:57 Uhr
Inhaltsverzeichnis
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 dass 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, dass das zugehörige Pixel des Icons dargestellt wird. Analog dazu bedeutet ein Bit-Wert von '0', dass 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;