<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Transparentes Bitmap wird nicht transparent!]]></title><description><![CDATA[<p>Ich habe von folgendem Thread meine Funktion geschrieben:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-1309-and-highlight-is-transparent.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-1309-and-highlight-is-transparent.html</a></p>
<p>Mein Ziel ist 2 Logos transparent zu machen.<br />
Ich habe folgendes in die Funktion OnPaint eingefügt:</p>
<pre><code class="language-cpp">CPaintDC dc(this); // Gerätekontext zum Zeichnen
	if (IsIconic())
	{		

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM&gt;(dc.GetSafeHdc()), 0);

		// Symbol in Clientrechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&amp;rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
	CBitmap Logo;
	Logo.LoadBitmap(IDB_LOGO);
	Logos(&amp;dc, &amp;Logo);
</code></pre>
<p>Die Funktion vom oben genannten Thread schaut so aus:</p>
<pre><code class="language-cpp">void CQPMDlg::Logos(CDC *pDC, CBitmap* BitmaptoDraw) 
{ 
    //  verursacht einen Fehler! (m_bBitmapLoaded wurde nicht gefunden)
    // Ist das Bitmap geladen ??? 
   /* if(this-&gt;m_bBitmapLoaded != TRUE) 
    { 
        return; 
    } */

    CRect rc; 
    GetClientRect(rc); 

    COLORREF crOldBack = pDC-&gt;SetBkColor( RGB(255, 255, 255)); 
    COLORREF crOldText = pDC-&gt;SetTextColor( RGB(0, 0, 0)); 
    CDC dcImage, dcTrans; 

    // Zwei Speicher Geräte Kontext für das Bild und die Maske 
    dcImage.CreateCompatibleDC( pDC ); 
    dcTrans.CreateCompatibleDC( pDC ); 

    CBitmap *pOldBitmapImage; 
    pOldBitmapImage = dcImage.SelectObject(BitmaptoDraw); 

    // Erstellen einer Bitmapmaske 
    CBitmap bitmapTrans; 
    int nWidth    = rc.Width(); 
    int nHeight    = rc.Height(); 
    // Erstellen einer Monochrombitmaps 
    bitmapTrans.CreateBitmap( nWidth, nHeight, 1, 1, NULL); 

    CBitmap *pOldBitmapTrans = dcTrans.SelectObject(&amp;bitmapTrans); 

    dcImage.SetBkColor(RGB(0, 0, 0)); 
    dcTrans.BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCCOPY); 

    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCINVERT); 
    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcTrans, 0, 0, SRCAND); 
    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCINVERT); 

    dcImage.SelectObject(pOldBitmapImage); 
    dcTrans.SelectObject(pOldBitmapTrans); 

    pDC-&gt;SetBkColor(crOldBack); 
    pDC-&gt;SetTextColor(crOldText); 
}
</code></pre>
<p>Nun mein Problem:<br />
Das Bitmap ist nicht transparent! Dafür ist der Hintergrund des Dialoges schwarz!</p>
<p>Kann mir jemand sagen, was ich falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174138/transparentes-bitmap-wird-nicht-transparent</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 17:42:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174138.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Feb 2007 09:41:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Transparentes Bitmap wird nicht transparent! on Fri, 23 Feb 2007 09:43:34 GMT]]></title><description><![CDATA[<p>Ich habe von folgendem Thread meine Funktion geschrieben:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-1309-and-highlight-is-transparent.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-1309-and-highlight-is-transparent.html</a></p>
<p>Mein Ziel ist 2 Logos transparent zu machen.<br />
Ich habe folgendes in die Funktion OnPaint eingefügt:</p>
<pre><code class="language-cpp">CPaintDC dc(this); // Gerätekontext zum Zeichnen
	if (IsIconic())
	{		

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM&gt;(dc.GetSafeHdc()), 0);

		// Symbol in Clientrechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&amp;rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
	CBitmap Logo;
	Logo.LoadBitmap(IDB_LOGO);
	Logos(&amp;dc, &amp;Logo);
</code></pre>
<p>Die Funktion vom oben genannten Thread schaut so aus:</p>
<pre><code class="language-cpp">void CQPMDlg::Logos(CDC *pDC, CBitmap* BitmaptoDraw) 
{ 
    //  verursacht einen Fehler! (m_bBitmapLoaded wurde nicht gefunden)
    // Ist das Bitmap geladen ??? 
   /* if(this-&gt;m_bBitmapLoaded != TRUE) 
    { 
        return; 
    } */

    CRect rc; 
    GetClientRect(rc); 

    COLORREF crOldBack = pDC-&gt;SetBkColor( RGB(255, 255, 255)); 
    COLORREF crOldText = pDC-&gt;SetTextColor( RGB(0, 0, 0)); 
    CDC dcImage, dcTrans; 

    // Zwei Speicher Geräte Kontext für das Bild und die Maske 
    dcImage.CreateCompatibleDC( pDC ); 
    dcTrans.CreateCompatibleDC( pDC ); 

    CBitmap *pOldBitmapImage; 
    pOldBitmapImage = dcImage.SelectObject(BitmaptoDraw); 

    // Erstellen einer Bitmapmaske 
    CBitmap bitmapTrans; 
    int nWidth    = rc.Width(); 
    int nHeight    = rc.Height(); 
    // Erstellen einer Monochrombitmaps 
    bitmapTrans.CreateBitmap( nWidth, nHeight, 1, 1, NULL); 

    CBitmap *pOldBitmapTrans = dcTrans.SelectObject(&amp;bitmapTrans); 

    dcImage.SetBkColor(RGB(0, 0, 0)); 
    dcTrans.BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCCOPY); 

    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCINVERT); 
    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcTrans, 0, 0, SRCAND); 
    pDC-&gt;BitBlt( 0, 0, nWidth, nHeight, &amp;dcImage, 0, 0, SRCINVERT); 

    dcImage.SelectObject(pOldBitmapImage); 
    dcTrans.SelectObject(pOldBitmapTrans); 

    pDC-&gt;SetBkColor(crOldBack); 
    pDC-&gt;SetTextColor(crOldText); 
}
</code></pre>
<p>Nun mein Problem:<br />
Das Bitmap ist nicht transparent! Dafür ist der Hintergrund des Dialoges schwarz!</p>
<p>Kann mir jemand sagen, was ich falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1233941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1233941</guid><dc:creator><![CDATA[addict]]></dc:creator><pubDate>Fri, 23 Feb 2007 09:43:34 GMT</pubDate></item></channel></rss>