Vielleicht eine dumme Frage, aber wenn deine Werte zwischen 0 und 255 liegen, dann sind sie nur ein Byte groß, hast du damitnicht schon Grauwerte
Oder wie ist das aufgebaut 2 Bit pro Farbe, oder wie?
Mit dem Canvas ist gemeint, das du dir erstmal z.B. ein TBitmap erstells (ohne es anzuzeigen) und dessen Canvas Objekt nimmst, da hast du dann auch die Größeneigenschaften des TBitmaps zu Verfügung.
Mehrdimensionale Arrays siehe
http://www.delphi-treff.de/sprachen/...xe-datentypen/