<?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[Bitmaps &amp;amp; SpeicherDCs]]></title><description><![CDATA[<p>Hallöle</p>
<p>habe ein kleines Problem.<br />
Ich schreibe an einem Debugger für ein parallelisiertes FPGA-System und bin hierfür auf MFC festgesetzt. Mit QT habe ich schon einiges realisiert, leider bekomme ich die Bitmapverwaltung mit MFC nicht hin.</p>
<p>Es geht darum in einer Unterklasse Bitmapstreifen (ca 12px hoch, 3000-8000px breit) zu erstellen. Das Erstellen klappt, die Streifen sind da. Dann lasse ich ein SpeicherDC (Compatible zum pDC) darauf laufen und will Linien malen &amp; den Hintergrund ändern.</p>
<p>Leider tut's das aber nicht, ich habe also im Hauptfenster (nur die Bitmap selber wird übergeben) nur schwarze Kästen. Da das System mit 8 FPGAKarten mit je 72 Kanälen arbeitet, kann ich keinesfalls die Graphen erst zur Laufzeit in der OnDraw(..) malen, das wird zu langsam.</p>
<p>Mir scheint es so, als ob das SpeicherDC nicht in die Bitmap malt, sondern nur eine Art Overlay darstellt. Wir suchen und probieren jetzt seid Stunden, mit QT war das irgendwie ganz einfach...</p>
<p>Nach einem &quot;SpeicherInDieBitmap&quot;-Befehl hab ich gesucht aber leider nichts gefunden, Tutorials beschäftigen sich meist nur damit Bitmaps zu laden und einzubinden, aber nicht wie man auf einem SpeicherDC eine Bitmap kreiert, diese im Speicher belässt und später nur noch mit Bitblt auf den Bildschirm kopiert.</p>
<p>Wär schön wenn wer die Antwort wüsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174285/bitmaps-amp-speicherdcs</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 13:28:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174285.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Feb 2007 00:47:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bitmaps &amp;amp; SpeicherDCs on Sun, 25 Feb 2007 00:47:05 GMT]]></title><description><![CDATA[<p>Hallöle</p>
<p>habe ein kleines Problem.<br />
Ich schreibe an einem Debugger für ein parallelisiertes FPGA-System und bin hierfür auf MFC festgesetzt. Mit QT habe ich schon einiges realisiert, leider bekomme ich die Bitmapverwaltung mit MFC nicht hin.</p>
<p>Es geht darum in einer Unterklasse Bitmapstreifen (ca 12px hoch, 3000-8000px breit) zu erstellen. Das Erstellen klappt, die Streifen sind da. Dann lasse ich ein SpeicherDC (Compatible zum pDC) darauf laufen und will Linien malen &amp; den Hintergrund ändern.</p>
<p>Leider tut's das aber nicht, ich habe also im Hauptfenster (nur die Bitmap selber wird übergeben) nur schwarze Kästen. Da das System mit 8 FPGAKarten mit je 72 Kanälen arbeitet, kann ich keinesfalls die Graphen erst zur Laufzeit in der OnDraw(..) malen, das wird zu langsam.</p>
<p>Mir scheint es so, als ob das SpeicherDC nicht in die Bitmap malt, sondern nur eine Art Overlay darstellt. Wir suchen und probieren jetzt seid Stunden, mit QT war das irgendwie ganz einfach...</p>
<p>Nach einem &quot;SpeicherInDieBitmap&quot;-Befehl hab ich gesucht aber leider nichts gefunden, Tutorials beschäftigen sich meist nur damit Bitmaps zu laden und einzubinden, aber nicht wie man auf einem SpeicherDC eine Bitmap kreiert, diese im Speicher belässt und später nur noch mit Bitblt auf den Bildschirm kopiert.</p>
<p>Wär schön wenn wer die Antwort wüsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1234940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1234940</guid><dc:creator><![CDATA[ASDBigmac]]></dc:creator><pubDate>Sun, 25 Feb 2007 00:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmaps &amp;amp; SpeicherDCs on Sun, 25 Feb 2007 17:01:56 GMT]]></title><description><![CDATA[<p>Schau dir mal die beiden Beiträge an, das sollte dir weiterhelfen:</p>
<p><a href="http://www.codeproject.com/bitmap/drawing_without_flicker.asp" rel="nofollow">http://www.codeproject.com/bitmap/drawing_without_flicker.asp</a><br />
<a href="http://www.codeproject.com/bitmap/membm.asp" rel="nofollow">http://www.codeproject.com/bitmap/membm.asp</a></p>
<p>Gruß Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235302</guid><dc:creator><![CDATA[CTecS]]></dc:creator><pubDate>Sun, 25 Feb 2007 17:01:56 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmaps &amp;amp; SpeicherDCs on Sun, 25 Feb 2007 22:01:05 GMT]]></title><description><![CDATA[<p>Hmm Hilft mir irgendwie nicht wirklich weiter</p>
<p>Hier was gerade da ist:</p>
<p>--&gt; Im Datenblock</p>
<pre><code class="language-cpp">int Datenblock::makeBitmap(int faktor, CDC* pDC){	//baue Bitmap auf

		Bitmap = new CBitmap();

		CDC CMemDC;

		CMemDC.CreateCompatibleDC(pDC);

		int tmp = Bitmap -&gt; CreateCompatibleBitmap(pDC,SPEICHERSTELLEN*faktor*10,12);

		TRACE(&quot;PANIC, %i&quot;, tmp);

		Bitmap -&gt; SetBitmapDimension(SPEICHERSTELLEN*faktor*10,12);

		HBITMAP pOldBitmapImage = (HBITMAP)CMemDC.SelectObject(&amp;Bitmap);

		CSize sz = Bitmap -&gt; GetBitmapDimension();

		TRACE(&quot;Bitmap Size: %i, %i\n&quot;,sz.cx,sz.cy);

		CMemDC.FillSolidRect(0,0,SPEICHERSTELLEN*faktor*10,10,BgColor);

		CMemDC.SetBkMode(OPAQUE);

		CMemDC.SetBkColor(BgColor);

		CPen *pCOrgPen;

		CPen CRedPen(PS_SOLID,2,RGB(255,255,255));

        CPen CBluePen(PS_DASHDOT,1,RGB(0,0,255));

        // Grafikcursor auf Ausgangsposition setzen

        CMemDC.MoveTo(5,5);

        // Roten Stift fuer erste Linie auswaehlen

        pCOrgPen = CMemDC.SelectObject(&amp;CRedPen);

        // Erste Linie zeichnen

        CMemDC.LineTo(100,5);

		CMemDC.SelectObject(pOldBitmapImage);

	return 1;

	}
</code></pre>
<p>Das ist der Aufruf in der OnDraw</p>
<pre><code class="language-cpp">if(Fertig){

		int i = 0;

		std::list&lt;Datenblock*&gt; daten = comb-&gt;getList();

		TRACE(&quot;Objekte in der Liste %i\n&quot;,daten.size());

		for (std::list&lt;Datenblock*&gt;::iterator iter = daten.begin(); iter != daten.end(); iter++){

			CBitmap * bm = (*iter)-&gt;getBitmap();

			CDC CMemDC;

			CMemDC.CreateCompatibleDC(pDC);

			CMemDC.SelectObject(bm);

			CRect rcClient;

			GetClientRect(rcClient);

			//CMemDC.FillSolidRect(0,0,640,10+10*i+i,RGB(255, 239, 93));

			pDC-&gt;BitBlt(0,12*i+i,rcClient.Width(),12+12*i+i,&amp;CMemDC,0,0,SRCCOPY);

			i++;

			TRACE(&quot;Male %i\n&quot;,i);

			}

		}

	TRACE(&quot;Fenster wird neu gezeichnet!\n&quot;);
</code></pre>
<p>Das einzige was ich bekomme sind Schwarze Balken. Was mich wundert ist auch, dass das CreateCompatibleBitmap laut der GetBitmapDimension eine 0x0 Bitmap erzeugt. Mit dem SetBitmapDimension lässt sich zumindest das verändern.</p>
<p>DIB's bringen mir recht wenig, da auch überall steht das die langsam sind, was ich bräuchte sind DDB im Speicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235528</guid><dc:creator><![CDATA[ASDBigmac]]></dc:creator><pubDate>Sun, 25 Feb 2007 22:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Bitmaps &amp;amp; SpeicherDCs on Sun, 25 Feb 2007 22:42:51 GMT]]></title><description><![CDATA[<p>.. doppelt wegen Netlag</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1235530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1235530</guid><dc:creator><![CDATA[ASDBigmac]]></dc:creator><pubDate>Sun, 25 Feb 2007 22:42:51 GMT</pubDate></item></channel></rss>