Im speziellen findest du das natürlich für deinen konkreten Controller
im Datenblatt und das kann durchaus abweichen.
Aber nur so als Übung.
Angenommen du hast ein Raster
1 | +---+---+---+---+---+---+
|
2 | | | | | | | |
|
3 | +---+---+---+---+---+---+
|
4 | | | | | | | |
|
5 | +---+---+---+---+---+---+
|
6 | | | | | | | |
|
7 | +---+---+---+---+---+---+
|
8 | | | | | | | |
|
9 | +---+---+---+---+---+---+
|
und die Zellen wären zeilenweise durchnummeriert. Beginnend links oben,
dann entlang der Zeile und wenn die Zeile zu Ende ist, dann eben weiter
in der nächsten Zeile:
1 | 0 1 2 3 4 5
|
2 |
|
3 | +---+---+---+---+---+---+
|
4 | 0 | 0 | 1 | 2 | 3 | 4 | 5 |
|
5 | +---+---+---+---+---+---+
|
6 | 1 | 6 | 7 | 8 | 9 |10 |11 |
|
7 | +---+---+---+---+---+---+
|
8 | 2 |12 | . | . | . | | |
|
9 | +---+---+---+---+---+---+
|
10 | 3 | | | | | | |
|
11 | +---+---+---+---+---+---+
|
dann hat das erste Pixel der zweiten Zeile offenbar die Nummer 6. Stellt
man sich das Raster linear abgewickelt im Speicher vor, dann ist das
also die 7-te Zelle, gerechnet vom Beginn im Speicher.
Warum ist das die Zelle mit der Nummer 6? (Schau dir mal die Anzahl der
Spalten an)
Die Zelle an der Position 1/2 hat die Nummer 8. Warum ist das so?
Nun, weil das erste Pixel in dieser Zeile die Nummer 6 hat, und da dann
noch die 2 für die tatsächlich benötigte Spalte dazu, macht die 8.
Also: Was ist jetzt die allgemeine Formel um auszurechnen, welche NUmmer
eine Zelle vom Beginn des Rasters an gerechnet hat, wenn man die Spalten
und Zeilennummer hat?
Wie ändert sich diese Formel, wenn man an jeder Rasterposition nicht 1
Byte sondern deren 2 (wegen 16bpp) hat?