<?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[Icon aus Imagliste zu Bitmap]]></title><description><![CDATA[<p>Hallo, ich hab folgendes problem.<br />
ich möchte aus einer Imageliste die Icons beinhaltet, bestimmte Icons in ein Bitmap umwandeln und dann später als Bitmap speichern.</p>
<p>In meiner Liste werden 12 Icons korrect angezeigt. egal welches Icon ich jetzt auswähle. ob es nur ein Icon ist oder Icon nr 0,3,6 es wird mir immmer nur das letzte Icon (nr 12) dargestellt.</p>
<p>CCtrlList ist eine eigens erstellte Classe unter verwendung der WinAPI die Korrect funktioniert.</p>
<p>kann mir dabei bitte jemand helfen??</p>
<pre><code>void ExtractBitmap(CCtrlList *pList,CImageList *pSmall,CImageList *pLarge)
{	/**********************************************************************************************
										EXTRACT BITMAP
					extrahiert die Icons aus der Liste zu einem Bitmap

					-in
						- pList Address Zeiger auf die Liste in der die Icons dargestellt werden
						- pSmall Address Zeiger auf die Imageliste in der die kleinen Icons zu finden sind
						- pLarge Address Zeiger auf die Imageliste in der die großen Icons zu finden sind

	**********************************************************************************************/

	int *iaCurSel = new int[pList-&gt;GetSelectedCount()];//Bereich für die  markierten Elemente

	int iSelCount = pList-&gt;GetSelectedItem(iaCurSel);//Belegt Bereich mit markierten Elementen zB. Icon Nr 0,3,6

	HDC hDc = GetDC(pList-&gt;GetDlgItem());

	for (int i = 0; i &lt; iSelCount; i++)
	{
		IMAGEINFO imageinfo;
		pLarge-&gt;GetImageInfo (i, &amp;imageinfo); 

		HDC hdcMem = CreateCompatibleDC (hDc); 

		CRect rect (imageinfo.rcImage);

		HBITMAP hBitmap = CreateCompatibleBitmap (hdcMem, rect.Width() /** iSelCount*/, rect.Height ());

		HBITMAP hBmpOld = (HBITMAP)SelectObject (hdcMem, hBitmap);

		ImageList_Draw(pLarge-&gt;GetSafeHandle(),iaCurSel[i],hdcMem,rect.Width () /** i + rect.Width ())*/, rect.Height (),ILD_NORMAL);

		SelectObject (hdcMem,hBmpOld);

//Ab hier ist der Code nur zur Kontrolle
//umgewandeltes Icon wird als Bitmap wieder in die liste eingefügt.

		CBitmap bmp;
		bmp.Attach(hBmpOld);

		CString sText(&quot;Blub&quot;);
		pLarge-&gt;Add(&amp;bmp,RGB(0,0,0));

		//Element der Liste erstellen
		LVITEM LvItem;
		memset(&amp;LvItem,0,sizeof(LvItem));		

		LvItem.mask			= LVIF_TEXT|LVIF_IMAGE ;
		LvItem.cchTextMax	= sText.GetLength();

		LvItem.iItem		= pList-&gt;GetItemCount();
		LvItem.iImage		= pLarge-&gt;GetImageCount()-1;		
		LvItem.pszText		= sText.GetBuffer(sText.GetLength());

		pList-&gt;InsertItem(&amp;LvItem);

		DeleteObject(hBmpOld);
		DeleteObject(hBitmap);
		DeleteDC(hdcMem);
		bmp.DeleteObject();
	}

	ReleaseDC(pList-&gt;GetDlgItem(),hDc);
	delete [] iaCurSel;
/*
*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/229077/icon-aus-imagliste-zu-bitmap</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 08:43:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229077.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Dec 2008 11:19:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Sun, 07 Dec 2008 11:19:20 GMT]]></title><description><![CDATA[<p>Hallo, ich hab folgendes problem.<br />
ich möchte aus einer Imageliste die Icons beinhaltet, bestimmte Icons in ein Bitmap umwandeln und dann später als Bitmap speichern.</p>
<p>In meiner Liste werden 12 Icons korrect angezeigt. egal welches Icon ich jetzt auswähle. ob es nur ein Icon ist oder Icon nr 0,3,6 es wird mir immmer nur das letzte Icon (nr 12) dargestellt.</p>
<p>CCtrlList ist eine eigens erstellte Classe unter verwendung der WinAPI die Korrect funktioniert.</p>
<p>kann mir dabei bitte jemand helfen??</p>
<pre><code>void ExtractBitmap(CCtrlList *pList,CImageList *pSmall,CImageList *pLarge)
{	/**********************************************************************************************
										EXTRACT BITMAP
					extrahiert die Icons aus der Liste zu einem Bitmap

					-in
						- pList Address Zeiger auf die Liste in der die Icons dargestellt werden
						- pSmall Address Zeiger auf die Imageliste in der die kleinen Icons zu finden sind
						- pLarge Address Zeiger auf die Imageliste in der die großen Icons zu finden sind

	**********************************************************************************************/

	int *iaCurSel = new int[pList-&gt;GetSelectedCount()];//Bereich für die  markierten Elemente

	int iSelCount = pList-&gt;GetSelectedItem(iaCurSel);//Belegt Bereich mit markierten Elementen zB. Icon Nr 0,3,6

	HDC hDc = GetDC(pList-&gt;GetDlgItem());

	for (int i = 0; i &lt; iSelCount; i++)
	{
		IMAGEINFO imageinfo;
		pLarge-&gt;GetImageInfo (i, &amp;imageinfo); 

		HDC hdcMem = CreateCompatibleDC (hDc); 

		CRect rect (imageinfo.rcImage);

		HBITMAP hBitmap = CreateCompatibleBitmap (hdcMem, rect.Width() /** iSelCount*/, rect.Height ());

		HBITMAP hBmpOld = (HBITMAP)SelectObject (hdcMem, hBitmap);

		ImageList_Draw(pLarge-&gt;GetSafeHandle(),iaCurSel[i],hdcMem,rect.Width () /** i + rect.Width ())*/, rect.Height (),ILD_NORMAL);

		SelectObject (hdcMem,hBmpOld);

//Ab hier ist der Code nur zur Kontrolle
//umgewandeltes Icon wird als Bitmap wieder in die liste eingefügt.

		CBitmap bmp;
		bmp.Attach(hBmpOld);

		CString sText(&quot;Blub&quot;);
		pLarge-&gt;Add(&amp;bmp,RGB(0,0,0));

		//Element der Liste erstellen
		LVITEM LvItem;
		memset(&amp;LvItem,0,sizeof(LvItem));		

		LvItem.mask			= LVIF_TEXT|LVIF_IMAGE ;
		LvItem.cchTextMax	= sText.GetLength();

		LvItem.iItem		= pList-&gt;GetItemCount();
		LvItem.iImage		= pLarge-&gt;GetImageCount()-1;		
		LvItem.pszText		= sText.GetBuffer(sText.GetLength());

		pList-&gt;InsertItem(&amp;LvItem);

		DeleteObject(hBmpOld);
		DeleteObject(hBitmap);
		DeleteDC(hdcMem);
		bmp.DeleteObject();
	}

	ReleaseDC(pList-&gt;GetDlgItem(),hDc);
	delete [] iaCurSel;
/*
*/
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1626431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626431</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Sun, 07 Dec 2008 11:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Sun, 07 Dec 2008 15:21:33 GMT]]></title><description><![CDATA[<p>Deine schleife ist falsch. Dumusst einmal die Bitmap erzeugen und den DC danach die Schleife laufen lassen, die diese Bitmap mit den Images befüllt.</p>
<p>Du erzeugst xmal eine neue Bitmap!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1626523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626523</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Sun, 07 Dec 2008 15:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Sun, 07 Dec 2008 22:17:41 GMT]]></title><description><![CDATA[<p>Also ich hab die schleife jetzt abgeändert, so wie ich dich verstanden hab,<br />
leider komm ich immer noch nicht zu dem gewünschen ergebniss.</p>
<p>jetzt hab ich teilweise schwarze Icons, mit weisen pünktchen, oder ganz schwarze Icons...<br />
ich nehm jetzt mal an das dies die Mask ist.</p>
<p>was läuft nun verkehrt?</p>
<pre><code>int *iaCurSel = new int[pList-&gt;GetSelectedCount()];

	int iSelCount = pList-&gt;GetSelectedItem(iaCurSel);

	HDC hDc = GetDC(pList-&gt;GetDlgItem());

	CBitmap bmp;

	IMAGEINFO imageinfo;
	pLarge-&gt;GetImageInfo (iaCurSel[0], &amp;imageinfo); 

	HDC hdcMem = CreateCompatibleDC (hDc); 

	CRect rect (imageinfo.rcImage);

	HBITMAP hBitmap = CreateCompatibleBitmap (hdcMem, rect.Width() /** iSelCount*/, rect.Height ());

	HBITMAP hBmpOld = (HBITMAP)SelectObject (hdcMem, hBitmap); 

	for (int i = 0; i &lt; iSelCount; i++)
	{

		pLarge-&gt;GetImageInfo (iaCurSel[i], &amp;imageinfo); 

		ImageList_Draw(pLarge-&gt;GetSafeHandle(),iaCurSel[i],hdcMem,rect.Width () /** i + rect.Width ())*/, rect.Height (), ILD_MASK | ILD_TRANSPARENT );

		HBITMAP hBmpOld = (HBITMAP)SelectObject (hdcMem, hBitmap);

		bmp.Attach(hBmpOld);

		CString sText(&quot;Blub&quot;);
		pLarge-&gt;Add(&amp;bmp,(COLORREF)imageinfo.hbmImage);

		//Element der Liste erstellen
		LVITEM LvItem;
		memset(&amp;LvItem,0,sizeof(LvItem));		

		LvItem.mask			= LVIF_TEXT|LVIF_IMAGE ;
		LvItem.cchTextMax	= sText.GetLength();

		LvItem.iItem		= pList-&gt;GetItemCount();
		LvItem.iImage		= pLarge-&gt;GetImageCount()-1;		
		LvItem.pszText		= sText.GetBuffer(sText.GetLength());

		pList-&gt;InsertItem(&amp;LvItem);

		DeleteObject(hBmpOld);
		DeleteObject(hBitmap);
		DeleteDC(hdcMem);
		bmp.DeleteObject();
	}

	ReleaseDC(pList-&gt;GetDlgItem(),hDc);
	delete [] iaCurSel;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1626720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626720</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Sun, 07 Dec 2008 22:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Mon, 08 Dec 2008 07:03:58 GMT]]></title><description><![CDATA[<p>1. Ist das doch gar nicht die gemalte Bitmap, die befindet sich in hBitmap</p>
<pre><code>bmp.Attach(hBmpOld);
</code></pre>
<p>2. Kann es doch nicht funktionieren, die folgenden Objekte freizugeben und im nächsten Schleifendurchlauf weiter zu verwenden!</p>
<pre><code class="language-cpp">DeleteObject(hBmpOld);
        DeleteObject(hBitmap);
        DeleteDC(hdcMem);
        bmp.DeleteObject();
    }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1626787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1626787</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 08 Dec 2008 07:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Mon, 08 Dec 2008 17:57:57 GMT]]></title><description><![CDATA[<p>ok stimmt hast recht,<br />
war gestern wohl doch schon recht spät <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
hab es jetzt geändert, aber es funzt immmer noch nicht, das gleiche ergebniss.</p>
<p>hab hier mal einen screen geschoßen.<br />
<a href="http://image-upload.de/image/7sSBUG/523ba25535.jpg" rel="nofollow">http://image-upload.de/image/7sSBUG/523ba25535.jpg</a></p>
<p>das blau markierte Image wollte ich als bitmap haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627156</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Mon, 08 Dec 2008 17:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Tue, 09 Dec 2008 08:13:39 GMT]]></title><description><![CDATA[<p>BTW: Es gibt auch ImageList_Merge<br />
<a href="http://msdn.microsoft.com/en-us/library/bb761558(VS.85).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/bb761558(VS.85).aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627453</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 09 Dec 2008 08:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to Icon aus Imagliste zu Bitmap on Tue, 09 Dec 2008 17:51:53 GMT]]></title><description><![CDATA[<p>danke aber das ist nicht das richtige, ich will es ja in einem bitmap haben, weil ich es später(wenn das ganze mal klappt) auf festplatte speichern will.</p>
<p>das ich das bitmap wieder in die immageliste steck, hab ich nur zum test gemacht, weil alles was mit grafischer darstellung zu tun hat völliges neuland für mich ist und ich so ganz unkompliziert testen kann ob der code auch das macht was ich will.</p>
<p>was er ja wie man sieht nicht tut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1627784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1627784</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 09 Dec 2008 17:51:53 GMT</pubDate></item></channel></rss>