Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Farben in einem HBITMAP vertauschen (https://www.delphipraxis.net/36831-farben-einem-hbitmap-vertauschen.html)

Lol-ly 26. Dez 2004 17:06


Farben in einem HBITMAP vertauschen
 
Ich habe ein 32-Bit Bitmap via LoadImage aus einer Datei geladen und möchte dieses nun in eine Toolbar einfügen. Das ganze soll jedoch transparent dargestellt werden, weshalb ich im Original den Hintergrund mit dem Farbwert FF00FF versehen habe.
Wie kann ich diese Farbwerte nun mit den Transparenzfarben vertauschen?

Muetze1 26. Dez 2004 17:24

Re: Farben in einem HBITMAP vertauschen
 
Moin!

Wieso setzt du nicht einfach FF00FF als Transparenzfarbe? Das sollte um Längen schneller gehen. Ansonsten müsstest du dir mit GetDIBits() die Rohdaten holen und durchlaufen...

MfG
Muetze1

Lol-ly 31. Dez 2004 14:21

Re: Farben in einem HBITMAP vertauschen
 
Wenn Du mir sagst wie, dann probier ich das.
Aus den Resourcen kann ich das Bild nicht laden, da bcc herumzickt, wenn ich ein Bitmap das mehr als 256 Farben hat als Resource einfügen möchte. CreateMappedBitmap scheidet meiner Ansicht nach also aus.

supermuckl 31. Dez 2004 15:27

Re: Farben in einem HBITMAP vertauschen
 
als transparentfarbe wird normalerweise garkeine genommen, wenn du gleich den alphakanal setzt
0 = unsichtbar 255 = nicht transparent.. dazwischen gibts alle transparenzstufen

wenn ich z.b. ein TGAimage das einen alphakanal besitzt, auf eine Timagebox übertrage und die Timagebox auf transparent = true setze, dann werden die alpha werte angenommen und verrechnet
ich weis nicht obs bei deiner toolbar auch so funktionieren könnte

SirThornberry 31. Dez 2004 16:02

Re: Farben in einem HBITMAP vertauschen
 
@Lol-ly: Ich denke es liegt nicht daran das dein Bild mehr als 256 farben hat sondern das es kein GültigesBitmap-Format für den Ressourcencompiler ist. Mit welchem Programm hast du die Bitmap erstellt? Stelle einfach sicher das die Bitmap nicht komprimiert ist etc. und dann sollte es auch funktionieren die Datei als Ressource einzubinden.

Dax 31. Dez 2004 16:05

Re: Farben in einem HBITMAP vertauschen
 
Mit Microsofts Visual Studio kannst du auch 32Bit-BMPs in Resourcen einfügen, sogar schon mit der 98er-Version. Borlands Resource-Manager sind sowieso extrem veraltet :?

Lol-ly 1. Jan 2005 11:37

Re: Farben in einem HBITMAP vertauschen
 
Moment, gehen wir mal der Reihe nach. Also Borlands ResCompiler kann auch 24bit und 32bit Bitmaps in die ResDateien packen. Ich hab ein 24bit Image mit MSPaint erstellt, hat der Compiler aber nicht angenommen. Mit welchem Prog kann ich ein unkomprimiertes Bild erstellen? Photoshop? Und wenn ja, wie?

Ultimator 1. Jan 2005 11:40

Re: Farben in einem HBITMAP vertauschen
 
Ob das Bild komprimiert ist, hängt von dem Format ab, in dem du es speicherst.
Ich nehm meistens TIFF, wenns mal was besonderes werden soll.

Lol-ly 1. Jan 2005 11:54

Re: Farben in einem HBITMAP vertauschen
 
TIFF bringt mich aber nicht weiter, es sollten am besten Bitmaps sein.

Christian Seehase 1. Jan 2005 13:20

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

also ich habe gerade mit Picture Publisher einer 32 Bit Bitmap erzeugt, mit dem BRCC32 eine Resourcendatei erstellt, und, zum Testen, die Bitmap in ein TImage geladen.
Keine Probleme.
:gruebel:

Lol-ly 1. Jan 2005 13:39

Re: Farben in einem HBITMAP vertauschen
 
Argh! Endlich mal eine Lösung und was ist? Micrografx ist nun iGrafx und nirgends kann man den Picture Publisher herunterladen! *heul*

Christian Seehase 1. Jan 2005 14:34

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

das wird kaum an Picture Publisher liegen, ich hatte nur gerade nichts anderes zur Hand.
Die Resourcendatei habe ich "zu Fuss" erzeugt, also aus der Kommandozeile heraus, nicht über die $R Compilerdirektive.
  • RC Datei erzeugt.
  • Konsole geöffnet.
  • Pfad zu BRCC32 in die Konsole gezogen
  • Pfad zur RC Datei in die Konsole gezogen (mit Blank davor versteht sich)
  • Enter
  • Fertig.

Ich habe mir gerade noch einmal Gimp heruntergeladen.
Das kann zwar "nur" 24 Bit Farbtiefe (oder ich hab' so auf die Schnelle die richtige Einstellung nicht gefunden), aber auch hier habe ich mit der Bitmap als Resource keine Probleme.

Zitat:

Zitat von Lol-ly
...und nirgends kann man den Picture Publisher herunterladen!

Das wird man wohl noch nie gekonnt haben, denn es war immer kommerziell.

Ein kleiner Tip noch:
Picture Publisher gibt es teilweise auch auf Heft CDs oder auch so günstig im Handel (zumindest ältere Versionen).
Meine Version 7 (Graphics Suite) habe ich mal bei Aldi für DM 30,- gekauft. ;-)

Lol-ly 1. Jan 2005 14:59

Re: Farben in einem HBITMAP vertauschen
 
Kann's vielleicht an der Version von bcc32 liegen?
Ich habe schon die ganze Zeit mit den selbstgeschriebenen und über die Konsole kompilierten Resourcen-Skripten gearbeitet und mittlerweile 24-Bit bmps von 3 verschiedenen Programmen versucht einzubinden, aber immer ist das Format nicht richtig. Oh, ich hab übrigens Delphi 7 Enterprise.

Christian Seehase 1. Jan 2005 15:05

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

Zitat:

Zitat von Lol-ly
Kann's vielleicht an der Version von bcc32 liegen?

ich habe das jetzt auch noch einmal mit der BRCC32 aus dem D7\Bin Verzeichnis probiert:
Funktioniert auch problemlos, und ich kann mir nicht vorstellen, dass die D7 PE eine andere Resourcencompilerversion hat als die D7 EE.

Hast Du jetzt BCC32 oder BRCC32 genommen?

Lol-ly 1. Jan 2005 15:10

Re: Farben in einem HBITMAP vertauschen
 
brcc32, sorry, tippfehler meinerseits

Christian Seehase 1. Jan 2005 15:37

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

also ich habe jetzt noch einmal die Resourcencompiler überprüft, die bei mir so auf der Platte stehen:
D5Pro, D6 PE, D7 PE und D2005 Architect Trial habe alle BRCC32.EXE Version 5.40 dabei.

Daran wird's, aller Voraussicht nach, wohl nicht liegen.

Kannst Du mal detailliert beschreiben, wie Du das gemacht hast?

Lol-ly 1. Jan 2005 17:48

Re: Farben in einem HBITMAP vertauschen
 
Okay, ein Beispiel.
Das Bitmap wurde mit Adobe Photoshop erstellt, und 24bittig abgespeichert (R8G8B8).
In meinem resourcen-skript wird es über diese Zeile eingebunden

Delphi-Quellcode:
200 BITMAP "blabla.bmp"
dann folgt der aufruf von brcc32...

Delphi-Quellcode:
brcc32 blabla.rc
und die konsole antwortet mit:

Borland Resource Compile 5.40
...
Error blabla.rc Zeilenzahl 12: Invalid bitmap format

und das war's. Keine .res Datei, kein eingebundenes Bitmap...

Christian Seehase 1. Jan 2005 22:56

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

kann ich nicht nachvollziehen.
Kannst Du die Bitmap mal anhängen?

Lol-ly 2. Jan 2005 09:32

Re: Farben in einem HBITMAP vertauschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Here you go...

Christian Seehase 2. Jan 2005 11:59

Re: Farben in einem HBITMAP vertauschen
 
Moin Lol-ly,

funktioniert problemlos.
Liegt vielleicht an der RC Datei. :gruebel:

Lol-ly 2. Jan 2005 12:48

Re: Farben in einem HBITMAP vertauschen
 
Hmm wenns bei mir nicht funktioniert... könntest du dann die kompilierte Res-Datei hier posten :?:

Christian Seehase 2. Jan 2005 13:14

Re: Farben in einem HBITMAP vertauschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Lol-ly,

klar.
Gezippt, damit ich's anhängen kann.

Lol-ly 2. Jan 2005 14:00

Re: Farben in einem HBITMAP vertauschen
 
Hey, es klappt! Supi, danke!

...

So und jetzt etwas ernüchterndes: Der Transparenzeffekt, um den es mir eigenlich ging, tritt nicht in der Win32-ToolBar auf. Ich habe die Hintergrundfarbe noch extra in einer Colormap aufgelistet, die ich dann wiederum an CreateMappedBitmap übergeben habe, aber es tut sich nichts. Das selbe habe ich mit einem 16 Farben Bitmap versucht - da hat's funktioniert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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