C++ 2 Transparent Bilder übereinander anzeigen

sparx

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich schreibe gerade ein .ocx Control in C++ 2010 um und bin nun an einem Punkt wo ich nicht weiter weiß.
Ich möchte für eine Prüfung ein Bild anzeigen wo ein Farbiger Kreis über den Bereich gelegt wird der geprüft werden soll.

In Visual Studio 2010 kann ich einen neuen Dialog anlegen und diesen auch über eine Funktion anzeigen.
In diesem Dialog kann ich ein Picture Control platzieren das mir ein Bitmap anzeigt. Bis hierher funktioniert alles.
Will ich nun aber ein 2. Bitmap über dem ersten anzeigen wird dieses nicht angezeigt.
Wenn ich den "Transparent" Haken in den Einstellungen setze wird auch nicht das Element unter dem Bild angezeigt, sondern da wo es Transparent sein soll wird einfach die Hintergrundfarbe des Dialogs angezeigt.


Abhilfe gibt es durch GDI+.

Ich habe ein Testprojekt was exakt das tut was ich möchte.
Nur leider lässt sich das nicht auf die Dialoge im ocx Projekt übertragen.:ROFLMAO:

Der Code vom Testprojekt liegt bei(Einfach ein leeres Projekt erstellen und Code einfügen. Keine weiteren Header etc nötig)


Das Problem was ich also habe ist das ich bei den Dialogen im ocx keinen Zufriff auf das "HDC" habe das bei der "VOID OnPaint(HDC hdc)" übergeben wird.

Hat da schonmal jemand etwas in der Richtung realisiert?

Bin für jede Hilfe dankbar!


Stefan
 

Anhänge

  • background.jpg
    background.jpg
    3,8 KB · Aufrufe: 14
  • main.txt
    4,5 KB · Aufrufe: 18
Hallo Stefan.

Ich bin nicht in C++ zuhause, aber in Deinem Code habe ich etwas gelesen von background.jpg. Bilder im JPEG-Format unterstützen keine transparenten Hintergründe. Wenn Du stattdessen PNG-Bilder verwendest, sollte das Ganze funktionieren (ohne Garantie ;)).

Ich weiß jetzt nicht, ob man mit Paint transparente Hintergründe in PNG-Bildern hinbekommt, aber ich bin sicher, es geht z.B. mit Gimp2.

Kannst Du ja 'mal versuchen.

VG Carsten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe das mittlerweile schon anders gelöst.

Ich nutze nun GDI+ um ein BMP Bild zu Zeichnen und darauf dann Kreise oder Kästchen zu zeichnen.

Der Code sieht folgendermaßen aus:

Code:
void OnPaint()
{
 CPaintDC dc(this); // device context for painting
 
 Graphics    graphics(dc);
 Gdiplus::SolidBrush blackbrush(Color(0, 0, 0));
 Gdiplus::PointF     pointF(10.0f, 395.0f);
 Gdiplus::Pen        yellowPen( Color::Yellow,3.0f );
 //Bild zeichnen
 Image image(image.bmp);
 //Kasten zeichnen
 graphics.DrawImage(&image, 5, 5);
 graphics.FillRectangle(blackbrush,Gdiplus::Rect(71,313,28,22));
}

Mit PNG habe ich nicht ausprobiert.

Danke für deine Antwort.
 
Zurück
Oben