Bitmap laden, aber transparente farbe ??
-
Hallo, ich bin's noch mal.
Erstmal: Entschuldigung für die 5 Fehler, Phips!. Den Quelltext hatte ich aus einer eigenen Klasse kopiert, ohne an die Ausdrücke zu denken, die dort zwar definiert sind, 'global' aber ungültig sind. Zwar sind die Fehler von den Kollegen fast behoben worden, aber trotzdem möchte ich sie dir noch mal der Reihe nach verbessern:
- Ersetze m_crWhite durch RGB(255, 255, 255)
- Ersetze m_crBlack durch RGB(0, 0, 0)
- Ersetze Width() durch die Breite des Bildes
- Ersetze Height() durch die Höhe des Bildes
- Ändere deinen Code um in:
CPaintDC dc(this); // device context for painting // Transparentes Bitmap erzeugen HBITMAP hbitmap = ::LoadBitmap(m_hInstance,MAKEINTRESOURCE(IDB_BOSCH)); DrawTransparent(&dc, hbitmap, 20, 20, RGB(0,0,255));zu 3) und 4): Du kannst auch einfach zwei neue Parameter zur Funktion geben, die Breite und Höhe des Bildes erwarten.
________________________________________________________________
Ich bitte erneut um Verständnis und hoffe, dass nun alles läuft!
-
Danke!
Jetzt klappts auch bei mir!
-
jetzt hab ich wieder was neues:
ich habe jetzt alle bilder auf mein dialogfeld gezeichnet. wenn ich jetzt aber irgend ein neues bild zeichnen will, kommt einfach ein scharzes feld !?
ich hab erstmal ein buschen rumprobiert, aber auch wenn ich ein bild nehme, was noch nicht geöffnet ist, kommt ein schwarzes feld !?ich hab keine ahnung was das ist

-
Hallo,
ich habe die Unteraltung verfolgt und dann ausprobiert, ob es auch bei mir klappt. Ich habe ein Dialogfeldbasierende Anwendung erstellt. Sie lässt sich ohne Fehler kompilieren. Aber wenn ich das Bild anzeigen will (beim Klicken auf einen Button) zeigt er nichts. Woran kann das liegen?
Turbobrain
-
@ turbobrain: zeigt er ne fehlermeldung an oder macht er einfach nichts ?? vielleicht haste kein ereignis auf dein button hinzugefügt
. Scherz, aber beschreib bitte etwas genauer. könnte mir nähmlich vorstellen das du einfach einen total dummen fehler gemacht hast oder was übersehen hast, so ist es bei mir ziemlich oft !!(hat auch einer ne antwort auf meine frage nur so nebenbei ??)
-
ich habe keine ahnung was ich an meinen code gemacht habem aber auf einmal geht es ^^ *freu*

jetzt kommt das bitmap was ich haben will !!jetzt brauchen wir nur noch ne antwort für turbobrain

-
Hallo Red Skall,
du wolltest eine Beschreibung meines Problems.
Also ich habe den Code der hier im Beitrag geschrieben wurde übernommen und die Variablen angepasst. Dann habe ich das Bitmap mit LoadBitmap geladen, und dann DrawTransparence aufgerufen wie du, nur mit allen Parametern.
Wenn ich das Programm ausführe wird kein Fehler angezeigt, doch wenn ich dann auf den Button drücke um das Bild anzuzeigen, passiert nichts.
Bitte um Hilfe.
Turbobrain
-
probiers mal mit
HBITMAP hBmp; // erst noch das bitmap laden ... DrawTransparent(GetDC(), hBmp);oder falls du das getan hast ruf das mal in OnPaint() auf und nimm den schon in OnPaint() erzeugten DC (CDC dc).
vielleicht klappts. könnte mir nichts anderes vorstellen
ich machs ja auch so. und wenn er nichts macht, dann kann es eigentlich nur heißen das er nicht auf dem DC malst auf dem du malen willst *vermut*
-
Hallo Red Skall,
ich habe mir die Funktion DrawTransparent noch einmal eingehend zu Gemüte geführt und dann implementiert. Auf einmal hat es funktioniert, obwohl ich soweit ich weiß nichts anders gemacht habe als vorher.
Na ja Danke für deine Hilfe.
Übrigens hab ich in der MSDN einen Beitrag zu genau zu diesem Transparentzeichnen gefunden. Falls es dich interessiert, versuch es mal mit dem STichwort transparent.
Turbobrain
-
ach so. verstehe. in der funktion werden in schreitt 2 die bilder ohne transparenz dargestellt (maske). kann mann vielleicht versuchen so die "wirklichen" maße rauszukriegen
danke
