<?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[Pronlem mit Paint Funktionen]]></title><description><![CDATA[<p>Hi Leute, ich hab zurzeit ein eher nicht so schlimmes Problem. Ich habe nen Code (weiter unten), der soll einfach einen Kreis aktualisieren, wenn er mit der Maus gezogen wird (Drag&amp;Drop like). Das Problem ist jetzt, dass ich ja InvalidateRect(); benutzen muss, um den Hintergrund (aus Kästchen) zu zeichnen, damit keine Spuren vom D&amp;D Objekt zurückbleiben. Das Problem: Ich muss ein Rect von 256 Pixeln nehmen, weil wenn man die Maus zu schnell bewegt spuren zurückbleiben. Das Problem ist jetzt, dass der Hintergrund flackert (wegen dem großen RECT), aber das will ich damit ja nicht erreichen. Hier mal der Code:</p>
<p>Das ganze is inner Klasse, aber interessieren tuhen nur die beiden Funktionen:</p>
<p>Update Funktion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<pre><code class="language-cpp">int CSpieler::Update(HWND hwnd)
{
	if(CSpieler::exists==true)
	{
		if((MouseX &gt; CSpieler::x &amp;&amp; MouseX &lt; CSpieler::x+32) &amp;&amp; (MouseY &gt; CSpieler::y &amp;&amp; MouseY &lt; CSpieler::y+32))
			return 0;
		//Koordinaten festlegen
		CSpieler::x = MouseX;
		CSpieler::y = MouseY;
		//Wenn Snap-Funktion eingeschaltet ist,
		//wird das Objekt an einem Raster von X Pixeln ausgerichtet
		if(GlobalGrid.SnapObjects == true)
		{ 
			CSpieler::x-= CSpieler::x % 32;
			CSpieler::y-= CSpieler::y % 32;
		}
		RECT PlayerRC;
		PlayerRC.bottom = CSpieler::y+256+32;
		PlayerRC.top = CSpieler::y-256;
		PlayerRC.left = CSpieler::x-256;
		PlayerRC.right = CSpieler::x+256+32;
		InvalidateRect(hwnd, &amp;PlayerRC, true);
	}
	return 1;
}
</code></pre>
<p>und die Draw-Funktion:</p>
<pre><code class="language-cpp">void CSpieler::Draw(HWND hwnd)
{
	HDC hdc;
	HPEN PlayerPen;
	hdc = GetDC(hwnd);
	PlayerPen = CreatePen(PS_SOLID, 1, RGB(0,0,255));
	SelectObject(hdc, PlayerPen);
	Ellipse(hdc, CSpieler::x, CSpieler::y, CSpieler::x+32, CSpieler::y+32);
	ReleaseDC(hwnd, hdc);
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen bzw. Tipps geben, dass der Hintergrund nicht mehr so flackert (innerhalb des RECTs).</p>
<p>mfg Basti</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193382/pronlem-mit-paint-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 17:28:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193382.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Sep 2007 17:33:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pronlem mit Paint Funktionen on Tue, 25 Sep 2007 17:33:46 GMT]]></title><description><![CDATA[<p>Hi Leute, ich hab zurzeit ein eher nicht so schlimmes Problem. Ich habe nen Code (weiter unten), der soll einfach einen Kreis aktualisieren, wenn er mit der Maus gezogen wird (Drag&amp;Drop like). Das Problem ist jetzt, dass ich ja InvalidateRect(); benutzen muss, um den Hintergrund (aus Kästchen) zu zeichnen, damit keine Spuren vom D&amp;D Objekt zurückbleiben. Das Problem: Ich muss ein Rect von 256 Pixeln nehmen, weil wenn man die Maus zu schnell bewegt spuren zurückbleiben. Das Problem ist jetzt, dass der Hintergrund flackert (wegen dem großen RECT), aber das will ich damit ja nicht erreichen. Hier mal der Code:</p>
<p>Das ganze is inner Klasse, aber interessieren tuhen nur die beiden Funktionen:</p>
<p>Update Funktion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<pre><code class="language-cpp">int CSpieler::Update(HWND hwnd)
{
	if(CSpieler::exists==true)
	{
		if((MouseX &gt; CSpieler::x &amp;&amp; MouseX &lt; CSpieler::x+32) &amp;&amp; (MouseY &gt; CSpieler::y &amp;&amp; MouseY &lt; CSpieler::y+32))
			return 0;
		//Koordinaten festlegen
		CSpieler::x = MouseX;
		CSpieler::y = MouseY;
		//Wenn Snap-Funktion eingeschaltet ist,
		//wird das Objekt an einem Raster von X Pixeln ausgerichtet
		if(GlobalGrid.SnapObjects == true)
		{ 
			CSpieler::x-= CSpieler::x % 32;
			CSpieler::y-= CSpieler::y % 32;
		}
		RECT PlayerRC;
		PlayerRC.bottom = CSpieler::y+256+32;
		PlayerRC.top = CSpieler::y-256;
		PlayerRC.left = CSpieler::x-256;
		PlayerRC.right = CSpieler::x+256+32;
		InvalidateRect(hwnd, &amp;PlayerRC, true);
	}
	return 1;
}
</code></pre>
<p>und die Draw-Funktion:</p>
<pre><code class="language-cpp">void CSpieler::Draw(HWND hwnd)
{
	HDC hdc;
	HPEN PlayerPen;
	hdc = GetDC(hwnd);
	PlayerPen = CreatePen(PS_SOLID, 1, RGB(0,0,255));
	SelectObject(hdc, PlayerPen);
	Ellipse(hdc, CSpieler::x, CSpieler::y, CSpieler::x+32, CSpieler::y+32);
	ReleaseDC(hwnd, hdc);
}
</code></pre>
<p>Ich hoffe ihr könnt mir helfen bzw. Tipps geben, dass der Hintergrund nicht mehr so flackert (innerhalb des RECTs).</p>
<p>mfg Basti</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372557</guid><dc:creator><![CDATA[XDream]]></dc:creator><pubDate>Tue, 25 Sep 2007 17:33:46 GMT</pubDate></item><item><title><![CDATA[Reply to Pronlem mit Paint Funktionen on Tue, 25 Sep 2007 21:57:51 GMT]]></title><description><![CDATA[<p>Gib mal in Draw () den mit CreatePen () erzeugten Stift nach Gebrauch via DeleteObject () wieder frei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372708</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 25 Sep 2007 21:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Pronlem mit Paint Funktionen on Tue, 25 Sep 2007 22:45:07 GMT]]></title><description><![CDATA[<p>Ja, Tip kann ich geben: mach für die alte Position ein InvalidateRect bevor du die alten Koordinaten überschreibst, und dann noch ein InvalidateRect für die neue Position. Dann musst du nicht so ein riesen Rechteck angeben sondern nur das 32x32 Rechteck für den Kreis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1372720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1372720</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 25 Sep 2007 22:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pronlem mit Paint Funktionen on Wed, 26 Sep 2007 17:58:29 GMT]]></title><description><![CDATA[<p>thx das hat gut geklappt^^<br />
Das lieg am Invalidate Rect (auch vorher benutzen).<br />
Aber das mit dem DeleteObject(); hab ich gar nicht gesehen thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1373332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1373332</guid><dc:creator><![CDATA[XDream-Antwortet]]></dc:creator><pubDate>Wed, 26 Sep 2007 17:58:29 GMT</pubDate></item></channel></rss>