SDL WM SetIcon: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (nil->0 da PUint8 doch kein richtiger Pointer ist)
K (Daß -> Dass)
 
(8 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= SDL_WM_SetIcon=
 
= SDL_WM_SetIcon=
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''SDL_WM_SetIcon''' - Setzt das Icon für das Displayfenster
+
'''SDL_WM_SetIcon''' - Setzt das Icon für das Displayfenster.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  procedure '''SDL_WM_SetIcon'''(''icon'' : PSDL_Surface; ''mask'' : PUint8)
+
  procedure '''SDL_WM_SetIcon'''(''icon'' : PSDL_Surface; ''mask'' : Uint8)
 +
 
 +
 
  
<br>
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 15: Zeile 18:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''icon''  
 
! ''icon''  
| Eine Surface die das Icon enthält
+
| Eine [[SDL_Surface]], die das Icon enthält.
 
|-
 
|-
 
! ''mask''  
 
! ''mask''  
| Ist ein Pointer der auf ein Bild zeigt, dass die Alphakanalinformationen enthält.
+
| Ein Pointer, der auf ein Bild zeigt, das die Alphakanal-Informationen enthält.
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
Setzt das Icon für das Displayfenster.
+
Setzt das Icon für das Displayfenster.<br>
Bei Windows muss dieses 32*32 Pixel gross sein. <br>
+
 
Die Maske beschreibt die Gestalt des Icons. Wenn diese 0 ist, wird der Farbschlüssel oder der Alphakanal für die Transparenz benutzt. Wenn beide nicht vorhanden sind wird das Icon undurchsichtig. <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.
Wenn die Maske gesetzt ist, zeigt sie auf ein Bild mit folgenden Eigenschaften:<br>
+
 
Jede Scanline besteht aus (Breite/8) Bytes, aufgerundet. Der entscheidende Bit jedes Bytes ist der linkste.
+
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>
Dieser entscheidet ob sichtbar oder nicht sichtbar.
+
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.
 +
 
 +
 
  
<br>
 
 
== Hinweise ==
 
== Hinweise ==
 
Die Procedure muss vor [[SDL_SetVideoMode]] aufgerufen werden.
 
Die Procedure muss vor [[SDL_SetVideoMode]] aufgerufen werden.
 
<br>
 
<br>
 +
''Der Sinn bzw. die Funktion der Maske ist nicht klar. Einige Dokumentationen geben unterschiedliche Hinweise.''
 +
''Sicherer ist es mit dem Colorkey (siehe Beispiel).''
  
 
==  Beispiel ==
 
==  Beispiel ==
<pascal>//einfaches Beispiel
+
<source lang="pascal">//einfaches Beispiel
SDL_WM_SetIcon(SDL_LoadBMP('icon.bmp'), 0);</pascal>
+
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 51: Zeile 63:
  
 
   SDL_WM_SetIcon(image,0);
 
   SDL_WM_SetIcon(image,0);
end;</pascal>
+
end;</source>
 +
 
 +
 
  
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==

Aktuelle Version vom 18. März 2012, 16:57 Uhr

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;



Siehe auch

SDL_SetVideoMode, SDL_WM_SetCaption