<?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[CDC-ausschnitt in Bitmap-array kopieren]]></title><description><![CDATA[<p>hi,<br />
hab da n rieeesen problem, und zwar zeichne ich auf nem CImage-DeviceContext und muss regelmäßig einen kleinen teil neu zeichnen.</p>
<p>also ich bewege quasi eine figur ueber dieses bild, und muss nun verhinder das das ding spuren hinter sich herzieht .. also:</p>
<p>- wenn bild vorhanden, an alter position einfügen<br />
- neuen bildausschnitt an künftiger position kopieren<br />
- figur an neue position zeichnen</p>
<p>und das so alle 50ms ... aber das problem ist, das er beim kopiern wohl irgendwas verhaut oder so, hab da schon diverse tutorials ausm netz probiert, aber es funzt einfach nicht, hier mal der wichtige teil <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code>void CDrawInterface2D::loadRobot(int ID, int style, CVector pos){
	CDC memDC; //temp speicher
	memDC.CreateCompatibleDC(mDC); //mDC = pointer auf CImage-DC
	BITMAP bmRobot;

	//Eckkoordinaten des Roboters
	CVector bottomright = pos + (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
	CVector topleft = pos - (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
	CPoint ptl = mGDIWrapper-&gt;WorldToPixel(topleft);
	CPoint pbr = mGDIWrapper-&gt;WorldToPixel(bottomright);
	//Breite und Hoehe des Roboters
	int height = pbr.y - ptl.y;
	int width  = pbr.x - ptl.x;

	if (ID &gt; 0){
		//altes Bild einsetzen
		if (mDrawnOnce){
			memDC.SelectObject(&amp;clrRobot[ID-1]);
			mDC-&gt;StretchBlt(ptl.x,ptl.y,width,height,mDC,0,0,30,30,SRCCOPY);
		}//if

		//neues Bild kopiern
		memDC.SelectObject(&amp;clrRobot[ID-1]);
		memDC.StretchBlt(0,0,30,30,mDC,ptl.x,ptl.y,width,height,SRCCOPY);

		//Roboter laden
		switch (style){
			case 0: picture[16].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[16]);
					break;
			case 1: picture[17].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[17]);
					break;
			case 2: picture[18].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[18]);
					break;
			case 3: picture[19].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[19]);
					break;
		}//switch

		mDC-&gt;StretchBlt(ptl.x,ptl.y,width,height,&amp;memDC,0,0, 
			          bmRobot.bmWidth,bmRobot.bmHeight,SRCCOPY);
	}//if
}//loadRobot
</code></pre>
<p>clrRobot definiert als -&gt; CBitmap clrRobot[20]; da sollen regelmäßig abhängig von der ID welche in der methode uebergeben wird neue ausschnitte rein.<br />
also die roboter ham ne ID und die robos werden eben alle 50ms gemalt.<br />
nu is eben das prob das der immer noch eine spur zieht, und nix kopiert und einfügt und dergleichen.</p>
<p>hoffe mir kann einer helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/151064/cdc-ausschnitt-in-bitmap-array-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 22:33:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/151064.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Jun 2006 17:48:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CDC-ausschnitt in Bitmap-array kopieren on Thu, 22 Jun 2006 17:48:23 GMT]]></title><description><![CDATA[<p>hi,<br />
hab da n rieeesen problem, und zwar zeichne ich auf nem CImage-DeviceContext und muss regelmäßig einen kleinen teil neu zeichnen.</p>
<p>also ich bewege quasi eine figur ueber dieses bild, und muss nun verhinder das das ding spuren hinter sich herzieht .. also:</p>
<p>- wenn bild vorhanden, an alter position einfügen<br />
- neuen bildausschnitt an künftiger position kopieren<br />
- figur an neue position zeichnen</p>
<p>und das so alle 50ms ... aber das problem ist, das er beim kopiern wohl irgendwas verhaut oder so, hab da schon diverse tutorials ausm netz probiert, aber es funzt einfach nicht, hier mal der wichtige teil <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code>void CDrawInterface2D::loadRobot(int ID, int style, CVector pos){
	CDC memDC; //temp speicher
	memDC.CreateCompatibleDC(mDC); //mDC = pointer auf CImage-DC
	BITMAP bmRobot;

	//Eckkoordinaten des Roboters
	CVector bottomright = pos + (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
	CVector topleft = pos - (CVector(ROBOTSIZE,ROBOTSIZE).scaled(0.5));
	CPoint ptl = mGDIWrapper-&gt;WorldToPixel(topleft);
	CPoint pbr = mGDIWrapper-&gt;WorldToPixel(bottomright);
	//Breite und Hoehe des Roboters
	int height = pbr.y - ptl.y;
	int width  = pbr.x - ptl.x;

	if (ID &gt; 0){
		//altes Bild einsetzen
		if (mDrawnOnce){
			memDC.SelectObject(&amp;clrRobot[ID-1]);
			mDC-&gt;StretchBlt(ptl.x,ptl.y,width,height,mDC,0,0,30,30,SRCCOPY);
		}//if

		//neues Bild kopiern
		memDC.SelectObject(&amp;clrRobot[ID-1]);
		memDC.StretchBlt(0,0,30,30,mDC,ptl.x,ptl.y,width,height,SRCCOPY);

		//Roboter laden
		switch (style){
			case 0: picture[16].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[16]);
					break;
			case 1: picture[17].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[17]);
					break;
			case 2: picture[18].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[18]);
					break;
			case 3: picture[19].GetObject(sizeof(bmRobot),&amp;bmRobot);
					memDC.SelectObject(&amp;picture[19]);
					break;
		}//switch

		mDC-&gt;StretchBlt(ptl.x,ptl.y,width,height,&amp;memDC,0,0, 
			          bmRobot.bmWidth,bmRobot.bmHeight,SRCCOPY);
	}//if
}//loadRobot
</code></pre>
<p>clrRobot definiert als -&gt; CBitmap clrRobot[20]; da sollen regelmäßig abhängig von der ID welche in der methode uebergeben wird neue ausschnitte rein.<br />
also die roboter ham ne ID und die robos werden eben alle 50ms gemalt.<br />
nu is eben das prob das der immer noch eine spur zieht, und nix kopiert und einfügt und dergleichen.</p>
<p>hoffe mir kann einer helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1083279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1083279</guid><dc:creator><![CDATA[Diggaa]]></dc:creator><pubDate>Thu, 22 Jun 2006 17:48:23 GMT</pubDate></item></channel></rss>