Autor Beitrag
Sal-9000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 01:58 
Hi

weiß hier evtl jemand, wie ich die Farb-palette einer Bitmap auf ein Formular zeichnen kann?
Halt für jede farbe ein "kästchen" ?
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 13:09 
Hoi

Ich werd es hier mal besser beschreiben:

Will mit meinem Prog eine 4Bit/16 Farben Bitmap öffnen und von einer TImage-Kompo anzeigen lassen! Die Palette die dieses Bild nun benutzt, will ich neben das Bild zeichnen!
Vorerst muss der user nichts an den Farben ändern können, das kommt später!
Wie kann ich die Palette der BMP nun auslesen und die ermittelten Werte an iwas übergeben, zb ne procedure, die diese dann auf meine Form zeichnet? Vom Style sollte es eben aussehen, wie zb in Paint unten die Palette!

Wäre nett, wenn mir da jemand helfen könnte!

SAL-9000
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 19.11.08 13:50 
Hi,

hab sowas noch nicht gemacht. Vorschlag:

1. Bitmap pixelweise durchgehen
2. jeden neu gefundenen Farbwert in einer Liste speichern
3. Selbst die Farbpalette anhand der Liste ausgeben.

Da die Farbwerte sich ja in die Bestandteile RGB einfach zerlegen lassen, kannst du die Palette sogar sortieren.

Grüße
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 14:08 
Hi

hab bisher noch nicht mit Farbpaletten gearbeitet!

Wie kann ich denn die in der Farbpalette eingebundenen Farben in zb ein array packen, welches ich dann (für den anfang) zb in einer ListBox als Text ausgebe?

Weiß immo nicht mal, wie ich an die Palletten-Daten komme :oops:

SAL-9000
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 19.11.08 14:55 
Dann beschäftige dich doch mal mit dem Aufbau verschiedener Bilddateien.

Bitmaps haben, soweit ich mich erinnere, z. B. gar keine Farbtabelle der verwendeten Farben gespeichert. D.h. du müsstest dir Pixel für Pixel angucken und mit vorhandenen vergleichen.

Einige Komponenten für Bilddateien liefert Delphi ja schon mit. Den Farbwert für das jeweilige Pixel (Array) kannst du darüber abfragen. Einfach mal die Komponenten anschauen.

Grüße
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 15:07 
Hi

es muss in Bitmaps ne Palette geben. Habe hier im Forum DAS gefunden. Kann nur noch nicht so wirklich was damit anfangen.....

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
H := CreatePalette(P^);
  if H <> 0 then
    Bitmap.Palette := H;

  FreeMem(P);
end;


wenn ich das richtig sehe, wird hier das Handle einer selbsterstellten Palette an Bitmap.Palette übergeben .....

muss doch also auch iwie andersrum gehen, oder?

Danke für eure Mühe
SAL-9000

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Mi 19.11.08 15:14 
Bitmaps haben keine Palette von sich aus gespeichert.

Schau mal hier:
de.wikipedia.org/wiki/Windows_bitmap

Ich denke mal, dass die Palette, die in dem Thread angesprochen wurde, selbst erstellt wurde. Wie und warum kann ich dir allerdings nicht sagen.
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 16:57 
Danke für den Link, werd ich mir nacher in ruhe anschauen!

An die Pixel-Farb-Werte komm ich dann mit Scanline oder welche Möglichkeit sollte ich da am besten benutzen?

Was wäre die "sauberste" Lösung?
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 19.11.08 23:59 
Ich hab hier jetzt mal rumgesucht und mir den wiki-Link angesehen ...
.....ich verstehe es leider immer noch nicht!

Wie bekomme ich es hin, das ich zb so:

ausblenden Delphi-Quelltext
1:
Listbox1.AddItem(xRed + ' | ' + yGreen  + ' | ' + zBlue)					


wobei xRed, yGreen, zBlue die einzelnen Hex-Werte der Farben sind die scanline gerade ermittelt ?


// Edit: ich meine, damit das entergebniss so aussieht:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
0 0 0
32 26 21
70 70 70
45 62 210
83 101 1
178 53 5
126 126 126
137 146 0
94 127 252
247 107 32
141 166 255
142 220 4
243 188 27
188 188 188
252 252 252
255 255 255



Moderiert von user profile iconmatze: Code-Tags hinzugefügt
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Do 20.11.08 11:23 
Vielleicht hilft dir das...
Einloggen, um Attachments anzusehen!
Sal-9000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Do 20.11.08 11:28 
Moin

Danke, werde ich anschauen, wenn ich wieder @home bin! Hab hier auf der Arbeit kein delphi :( ! Sieht aber so aus, als ob ich genau das gebraucht hätt! Danke nochmal! Sage dann bescheid, wenn ich weiter bin! Werd erstmal dran rumzupfen, ums zu verstehen ;)

SAL-9000
freedy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: Do 20.11.08 11:32 
Okay,

das Ganze kann dann noch mit Scanline optimiert werden. Infos dazu findest du hier: www.efg2.com/Lab/Ima...cessing/Scanline.htm