# ID 20 – Picture graphic – ISO 11783-6 – B.12.2
```{index} single: ID 20 – Picture graphic – ISO 11783-6 – B.12.2
```
Das **Picture Graphic** Objekt mit der **ID 20** dient zur Anzeige von Rastergrafiken (Bitmaps) auf dem Virtuellen Terminal. Es ermöglicht die Integration von Logos, Icons und komplexen visuellen Elementen.
### Attribute und Record Format (Tabelle B.41)
Die folgende Tabelle beschreibt den Aufbau des Picture Graphic Objekts im Objektpool.
| AID | Name | Typ | Größe (Bytes) | Bereich / Wert | Record Byte | Beschreibung |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| - | **Object ID** | Integer | 2 | 0 – 65534 | 1 – 2 | Eindeutige ID im Objektpool. |
| [0] | **Type** | Integer | 1 | 20 | 3 | Objekttyp = Picture Graphic. |
| [1] | **Width** | Integer | 2 | 0 – 65535 | 4 – 5 | Zielbreite in Pixeln (Höhe wird proportional skaliert). |
| [4] | **Actual width** | Integer | 2 | 0 – 65535 | 6 – 7 | Tatsächliche Breite der Rohdaten. |
| [5] | **Actual height** | Integer | 2 | 0 – 65535 | 8 – 9 | Tatsächliche Höhe der Rohdaten. |
| [6] | **Format** | Integer | 1 | 0 – 2 | 10 | 0=Monochrom (1 Bit), 1=16 Farben (4 Bit), 2=256 Farben (8 Bit). |
| [2] | **Options** | Bitmask | 1 | 0 – 7 | 11 | Bit 0: Transparenz (0=Opak, 1=Transp)
Bit 1: Blinken
Bit 2: Datenformat (0=Raw, 1=Run-Length Encoded). |
| [3] | **Transparency colour** | Integer | 1 | 0 – 255 | 12 | Farbindex, der transparent dargestellt wird. |
| - | **Number of bytes in raw data** | Integer | 4 | 0 – 2^32-1 | 13 – 16 | Größe der Bilddaten. |
| - | **Number of macros to follow** | Integer | 1 | 0 – 255 | 17 | Anzahl der folgenden Makro-Referenzen. |
| - | **Repeat:** {raw data} | Integer | 1 | 0 – 255 | 18 ... | Bilddaten (Bytes). |
| - | **Repeat:** {Event ID} | Integer | 1 | 0 – 255 | var. | (Nach Bilddaten) Event ID, die das Makro auslöst. |
| - | {Macro ID} | Integer | 1 | 0 – 255 | var. | Makro ID des auszuführenden Makros. |
## Funktionsweise und Darstellung
Das Picture Graphic-Objekt speichert Pixelgrafiken in binärer Form innerhalb der Objektpool-Datei (.IOP).
### Skalierung und Formate
* **Seitenverhältnis:** Das VT skaliert die Grafik basierend auf der Ziel-Breite (`Width`). Um Verzerrungen zu vermeiden, berechnet das VT die Ziel-Höhe automatisch aus dem Verhältnis von `Actual width` zu `Actual height`.
* **Farbtiefe:** Unterstützt werden 1-Bit (Monochrom), 4-Bit (16 Farben) und 8-Bit (256 Farben).
### Transparenz und Effekte
* **Transparency (Bit 0):** Wenn aktiviert, wird die in AID 3 definierte Farbe nicht gezeichnet; stattdessen scheint der Hintergrund durch.
* **Flashing (Bit 1):** Das Bild kann blinken (Frequenz und Stil hängen vom VT ab).
* **RLE-Komprimierung (Bit 2):** Run-Length Encoding kann bei einfachen Grafiken (viele gleichfarbige Flächen) Speicherplatz sparen.
## Ereignisse (Events - Tabelle B.40)
Das Picture Graphic Objekt reagiert auf folgende Ereignisse:
* **On Refresh:** Wird ausgelöst bei Änderungen von Optionen (z.B. Transparenz, Blinken) oder bei Masken-Refresh.
* **On Change Attribute:** Reaktion auf generelle Attributänderungen.
## Bedeutung für die Implementierung
Picture Graphics sind essenziell für ein modernes HMI.
* **Verschwendung vermeiden:** Da Bitmaps viel Speicher im VT belegen, sollten sie so klein wie möglich gehalten werden.
* **Ziederverwendung:** Ein Bild kann im Pool einmal definiert und von vielen Objekten (z. B. mehreren Buttons) referenziert werden.
* **Icons:** Sie werden häufig als "Designatoren" für Softkeys (ID 5) oder als Symbole in Containern (ID 3) verwendet.
Weitere Informationen und Beispiele finden sich im [ISOBUS Wiki - Picture Graphic object](https://isobus-studio.com/isobus-wiki/isobus-objectpool-objects/picture-graphic-object) von Tobias Tenberg.
----
*Hinweis: Für detaillierte Spezifikationen zu Datentypen und Nachrichtenformaten wird auf die offizielle ISO 11783-6:2018 verwiesen.*