AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icons mit Delphi erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Icons mit Delphi erstellen

Ein Thema von Martin K · begonnen am 7. Mai 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Seite 3 von 3     123   
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#21

Re: Icons mit Delphi erstellen

  Alt 14. Mai 2006, 23:38
Hallo,
Zitat von Martin K:
Danke.

Hab grad was sehr merkwürdiges festgestellt und ich habe keine Ahnung warum das so ist:

Irgendwie müssen die Rot- und Blauwerte vertauscht sein.
Hab einfach mal ein paar Farben eingetragen und in die Palette gespeichert.
Dann mit meinem anderen Programm die Palette angeschaut - und:
Aus blau wurde rot und aus rot wurde blau.
Das Grün hat immer gestimmt, nur eben Rot und blau war immer vertauscht.

Beispiel:
Aus der Farbe RGB(64,128,255) im Quellcode wurde RGB(255,128,64) im Programm.

Den Fehler zu beheben ist ja sehr einfach, ich frage mich nur woher er kommt...
Das kann ich Dir sagen:
Der Mensch verwendet die Reihenfolge RGB. So steht sie vermutlich auch in Deiner Paletten-Datei. Da aber die Speicherverwaltung von PCs etwas anders läuft als beim Menschen, werden die Farben hier so gespeichert (in einem DWORD): ABGR, also Alpha (bzw. Dummy-Byte), Blau, Grün, Rot. Wie Du siehst, ist die Reihenfolge genau anders herum, wie man erwarten würde. Wenn Du Dir den Record TPaletteEntry ansiehst, wirst Du feststellen, dass dort auch die Reihenfolge umgedreht ist.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: Icons mit Delphi erstellen

  Alt 14. Mai 2006, 23:47
Zitat von xaromz:
Wenn Du Dir den Record TPaletteEntry ansiehst, wirst Du feststellen, dass dort auch die Reihenfolge umgedreht ist.
Hm..
Also wenn ich mir eine Variable vom Typ TPaletteEntry anlege, gebe den Variablenname dann im Quellcode ein und drücke einen Punkt dahinter, dann erscheinen die Einträge aber genau in der Reigenfolge: peRed, peGreen und peBlue - ...nicht umgekehrt



Übrigens, betreffende Teile im Quellcode geändert:
Delphi-Quellcode:
//Speichern:
  for i := 0 to High(Palette^) do
  begin
    lpPal^.palPalEntry[i].peRed := GetBValue(ColorToRGB(Palette^[i]));
    lpPal^.palPalEntry[i].peGreen:= GetGValue(ColorToRGB(Palette^[i]));
    lpPal^.palPalEntry[i].peBlue := GetRValue(ColorToRGB(Palette^[i]));
  end;

//Laden:
  for i := 0 to Count-1 do
    Palette^[i] := RGB(lpPal^.palPalEntry[i].peBlue,
      lpPal^.palPalEntry[i].peGreen, lpPal^.palPalEntry[i].peRed);
Also an die Reihenfolge BGR anstatt RGB muss ich mich erst gewöhnen, das hab ich ja sonst noch nie gehört/gelesen.....
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#23

Re: Icons mit Delphi erstellen

  Alt 14. Mai 2006, 23:51
Hallo,
Zitat von Martin K:
Zitat von xaromz:
Wenn Du Dir den Record TPaletteEntry ansiehst, wirst Du feststellen, dass dort auch die Reihenfolge umgedreht ist.
Hm..
Also wenn ich mir eine Variable vom Typ TPaletteEntry anlege, gebe den Variablenname dann im Quellcode ein und drücke einen Punkt dahinter, dann erscheinen die Einträge aber genau in der Reigenfolge: peRed, peGreen und peBlue - ...nicht umgekehrt
Da hast Du recht, hab ich verwechselt . In TColor ist die Reihenfolge so. Ich dachte, in TPaletteEntry ist das genauso.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Icons mit Delphi erstellen

  Alt 14. Mai 2006, 23:56
Zitat von xaromz:
In TColor ist die Reihenfolge so. Ich dachte, in TPaletteEntry ist das genauso.

Gruß
xaromz
Stimmt, jetzt wo Du's sagst...

Da hab ich mich schon immer gewundert, warum das bei TColor umgekehrt ist...
da wollt ich nämlich immer den HTML-Farbcode nehmen (ist ja genauso in Hexadezimal, wie TColor) und hab mich gewundert, warum da immer eine andere Frabe raus kam...

-----

Zitat von xaromz:
Da aber die Speicherverwaltung von PCs etwas anders läuft als beim Menschen, werden die Farben hier so gespeichert (in einem DWORD): ABGR, also Alpha (bzw. Dummy-Byte), Blau, Grün, Rot.
Jetzt weiß ich auch, warum die Datei 1024 Byte groß ist:
256 Fraben * (3 Byte pro RBG-Farbe + 1 Byte Alpha pro Farbe) = 1024 Byte !!!

Komisch, dabei gibts den Alpha doch nur bei 32 Bit und nicht bei der 8 Bit Farbpalette ?

//Edit:
Oder kann man am End ein 8 Bit Icon mit Alpha-Channel erstellen?????
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#25

Re: Icons mit Delphi erstellen

  Alt 15. Mai 2006, 08:27
Hallo,
Zitat von Martin K:
Jetzt weiß ich auch, warum die Datei 1024 Byte groß ist:
256 Fraben * (3 Byte pro RBG-Farbe + 1 Byte Alpha pro Farbe) = 1024 Byte !!!

Komisch, dabei gibts den Alpha doch nur bei 32 Bit und nicht bei der 8 Bit Farbpalette ?

//Edit:
Oder kann man am End ein 8 Bit Icon mit Alpha-Channel erstellen?????
Nein, das "Alpha"-Byte ist in diesem Fall einfach ein Füll-Byte, damit das Alignment stimmt. Die x86er CPUs arbeiten eben am schnellsten, wenn die Daten auf vier bzw. acht Byte ausgerichtet sind.

Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: Icons mit Delphi erstellen

  Alt 15. Mai 2006, 10:07
Achso...

Also hab ich bei jedem Bild, was keine 32 Bit hat, ein Viertel der Dateigröße nur Datenmüll
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz