Hintergrundbild
-
Ich möchte in einem Dialog ein Hintergurndbild einbetten. Da ich es stretchen muss, erledige ich das ganze in "::OnPaint()". Zusätlich habe ich ein paar statische Texte, die ich im Dialog "gemalt" habe. Leider erscheinen die nicht transparent, d.h. ich sehe beim Start des Programms graue Rechtecke im Bild. Welche Methode muss ich denn jetzt aufrufen, um die grauen Felder wegzukriegen?
void CPlanetenatmosphäreDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext für Zeichnen SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CClientDC dc(this); BITMAP bm; Hintergrundbild.GetObject(sizeof(bm),&bm); CDC SpeicherDC; SpeicherDC.CreateCompatibleDC(&dc); SpeicherDC.SelectObject(&Hintergrundbild); CRect Rect; GetClientRect(&Rect); dc.SetStretchBltMode(HALFTONE); dc.StretchBlt(0,0,Rect.right, Rect.bottom,&SpeicherDC, 0,0,bm.bmWidth, bm.bmHeight, SRCCOPY); CDialog::OnPaint(); } }Gruss Thomas
-
vielleicht klappts ja hiermit...
dc.SetBkMode(TRANSPARENT);
-
wer weiss wie man die suchfunktion benutzt hat einen vorteil
http://www.c-plusplus.net/forum/viewtopic.php?t=80930&highlight=hintergrund
-
dude77 -> Sorry, aber das habe ich auch bereits auprobiert. Funzt nicht.
Emperor_L0ser -> Den Beitrag habe ich nicht gefunden... (Suchen muss man könnnen *g*)
Vielen Dank
Gruss Thomas
-
Noch zum Thema Transparenz in Bitmaps:
http://www.henkessoft.de/mfc_einsteigerbuch_kapitel4.htm
siehe dort Kap. 4.2 Transparente Bitmaps erzeugen