Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Erklärung zu RGBTriple (https://www.delphipraxis.net/67922-erklaerung-zu-rgbtriple.html)

Funk 21. Apr 2006 20:51


Erklärung zu RGBTriple
 
Hallo,
habe in meinem Programm, in welchem Bilder bearbeitet werden, im Deklarationsteil folgenden Pointer definiert:
rgb:PRGBTriple;
Nun bräuchte ich für meine Doku eine Erklärung. Habe schon in Delphi Hilfen geschaut, doch finde für mich keine verständliche Erklärung.
Meine genaue Frage ist, was ist RGBTriple?

Gruss

Funk

Flare 21. Apr 2006 20:56

Re: Erklärung zu RGBTriple
 
Das RGP-Triple speichert eine Farbe als 3 Informationen. Den Rotwert (R), den Grünwert (G) den Blauwert (B).
Jeder dieser Werte hat einen Wert von 0 bis 255 wobei 0 nicht vorhanden und 255 voll bedeutet.


Flare

Funk 21. Apr 2006 21:31

Re: Erklärung zu RGBTriple
 
Das heißt, dass bei der Zuweisung

rgb := Bild.ScanLine[0]

die Information des ersten Pixel links-oben in dem RGBTriple gespeichert ist?

Funk

Flare 21. Apr 2006 21:36

Re: Erklärung zu RGBTriple
 
Ich selber habe noch nie mit Scanline oder ähnlichen Befehlen gearbeitet. Aber meiner Meinung nach ergibt das nicht das oberste-linke Pixel sondern eher die oberste Linie.


Flare

Khabarakh 21. Apr 2006 22:12

Re: Erklärung zu RGBTriple
 
Es ergibt einen Pointer auf den Anfang der ersten Zeile, und das ist nunmal links oben ;) .

negaH 21. Apr 2006 23:31

Re: Erklärung zu RGBTriple
 
Scanline[0] gibt in diesem Falle die letzte Zeile im Bitmap zurück da Bitmaps zeilenweise umgekehrt organisiert sind. Ist zwar "blödsinnig" aber halt mal so im Windows.

Was nun über ScanLine angesprochen wird hängt vom Bitmap Pixelformat ab. Du solltes mit Bitmap.PixelFormat := pf32Bit arbeiten da nun über ScanLine per LongWord auf einen Pixel zugegriffen werden kann. Bei anderen Pixelformaten müsstest du umständlich die Farbdaten dekodieren oder bei <= pf256Bit sogar über die Farbtabelle der Bitmap gehen.

Gruß Hagen

xaromz 22. Apr 2006 08:17

Re: Erklärung zu RGBTriple
 
Hallo,
Zitat:

Zitat von negaH
Scanline[0] gibt in diesem Falle die letzte Zeile im Bitmap zurück da Bitmaps zeilenweise umgekehrt organisiert sind. Ist zwar "blödsinnig" aber halt mal so im Windows.

Da muss ich Dich enttäuschen :wink: . Scanline[0] gibt tatsächlich die erste Zeile zurück. Die zweite Zeile steht aber vor der ersten Zeile, da das Bitmap im Speicher auf dem Kopf steht. Wenn man also mit einem Pointer das gesamte Bitmap durchgehen will, muss man sich den Pointer auf die letzte Zeile holen und dann vorwärts gehen.

Gruß
xaromz

Der_Unwissende 22. Apr 2006 10:37

Re: Erklärung zu RGBTriple
 
Zitat:

Zitat von negaH
Ist zwar "blödsinnig" aber halt mal so im Windows

Hi, und hier würde ich dich jetzt enttäuschen, ich denke dass liegt an den DIBs, die sind genau so aufgebaut, wenn man eine positive Höhe angibt. Sollte die hingegen negativ sein, müssten die Daten auch "richtig rum" im Speicher liegen.

Gruß Der Unwissende

himitsu 22. Apr 2006 10:44

Re: Erklärung zu RGBTriple
 
Also nach der Definition eines BitMaps, ist das erste Pixel links-unten und dann wird Zeilenweise nach oben gezählt.

(war das beim Canvas von TPrinter nicht auch so?)

Flare 22. Apr 2006 10:56

Re: Erklärung zu RGBTriple
 
//Edit: Alles gelöscht...habe ein von als und gelesen :wall:


Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz