<?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[Update von gezeichneten Linien in Zeichenprogramm]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Zeichenprogramm erstellt, in welchem ich manchmal modale Fenster aufpoppen lasse (zum bearbeiten der gzeichneten Linien).</p>
<p>Wenn ich jetzt dieses aufgepoppte Modale Fenster verschiebe und über die Linien lege, möchte ich, dass die Linien trotzdem weiterhin gezeichnet werden und nicht verschwinden.</p>
<p>Gelöst habe ich das damit, dass ich den Zeichenbefehl in die Behandlungsroutine ONPAINT gesetzt habe, das funktioniert auch ganz gut bis auf eine Kleinigkeit:<br />
Beim ersten Verschieben des Fensters wird die Linie direkt neu gezeichnet.<br />
Verschiebe ich das Fenster dann erneut (über der Linie), dann wird die Linie nicht direkt neu gezeichnet. Erst bei erneutem Verschieben des Fenster wird die Linie dann wieder neu gezeichnet.</p>
<p>Klingt kompliziert, hier eine genaue Erklärung:</p>
<p>1.) Linie zeichnen:<br />
-------------------------</p>
<p>2.) Fenster aufpoppen lassen:<br />
----||-------------</p>
<p>3.) Fenster Verschieben:<br />
-------||-------------<br />
Bis hier geht alles genau so wie ich das möchte!</p>
<p>4.) Fenster erneut verschieben:<br />
------- ||-------------<br />
Jetzt sieht man so eine Lücke</p>
<p>5.) Verschiebe ich das Fenster jetzt nochmal:<br />
-------- ||-------------</p>
<p>Und diese Lücke habe ich jetzt immer beim verschieben, so als ob alle Behandlungsrountinen immer um 1 versetzt aufgerufen wird. Die Lücke geht übrigens immer bis zur vorherigen Grenze des Fensters.<br />
Ich hoffe, die Erklärung is verständlich.</p>
<p>Falls jemand Ideen hat und Screenshots braucht, können wir auch welche schicken...</p>
<p>Ich bitte um Hilfe, was das denn sein könnte und wie ich das Problem am besten lösen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162772/update-von-gezeichneten-linien-in-zeichenprogramm</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 07:15:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162772.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Oct 2006 09:33:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Update von gezeichneten Linien in Zeichenprogramm on Mon, 23 Oct 2006 09:33:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Zeichenprogramm erstellt, in welchem ich manchmal modale Fenster aufpoppen lasse (zum bearbeiten der gzeichneten Linien).</p>
<p>Wenn ich jetzt dieses aufgepoppte Modale Fenster verschiebe und über die Linien lege, möchte ich, dass die Linien trotzdem weiterhin gezeichnet werden und nicht verschwinden.</p>
<p>Gelöst habe ich das damit, dass ich den Zeichenbefehl in die Behandlungsroutine ONPAINT gesetzt habe, das funktioniert auch ganz gut bis auf eine Kleinigkeit:<br />
Beim ersten Verschieben des Fensters wird die Linie direkt neu gezeichnet.<br />
Verschiebe ich das Fenster dann erneut (über der Linie), dann wird die Linie nicht direkt neu gezeichnet. Erst bei erneutem Verschieben des Fenster wird die Linie dann wieder neu gezeichnet.</p>
<p>Klingt kompliziert, hier eine genaue Erklärung:</p>
<p>1.) Linie zeichnen:<br />
-------------------------</p>
<p>2.) Fenster aufpoppen lassen:<br />
----||-------------</p>
<p>3.) Fenster Verschieben:<br />
-------||-------------<br />
Bis hier geht alles genau so wie ich das möchte!</p>
<p>4.) Fenster erneut verschieben:<br />
------- ||-------------<br />
Jetzt sieht man so eine Lücke</p>
<p>5.) Verschiebe ich das Fenster jetzt nochmal:<br />
-------- ||-------------</p>
<p>Und diese Lücke habe ich jetzt immer beim verschieben, so als ob alle Behandlungsrountinen immer um 1 versetzt aufgerufen wird. Die Lücke geht übrigens immer bis zur vorherigen Grenze des Fensters.<br />
Ich hoffe, die Erklärung is verständlich.</p>
<p>Falls jemand Ideen hat und Screenshots braucht, können wir auch welche schicken...</p>
<p>Ich bitte um Hilfe, was das denn sein könnte und wie ich das Problem am besten lösen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159351</guid><dc:creator><![CDATA[Elchsfell]]></dc:creator><pubDate>Mon, 23 Oct 2006 09:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Update von gezeichneten Linien in Zeichenprogramm on Mon, 23 Oct 2006 11:05:57 GMT]]></title><description><![CDATA[<p>Der Zeichenbefehl gehört <em><strong>nur</strong></em> in die OnPaint Funktion! Nur dann werden auch Bildschirm Updates korrekt durchgeführt.</p>
<p>Die Frage ist was machst Du anders? Arbeitest Du mit dem Paintrect das im PaintDC übergweben wird.<br />
Setzt Du die Mapping Modes korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159427</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 23 Oct 2006 11:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Update von gezeichneten Linien in Zeichenprogramm on Mon, 23 Oct 2006 11:17:40 GMT]]></title><description><![CDATA[<p>So schaut mein Code in der OnPaint aus:</p>
<pre><code>void CMalenDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext für Zeichnen

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Symbol in Client-Rechteck 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
	{
	m_DrawBoard.DrawLines(m_pDrawingElements, this);
	m_DrawBoard.DrawCircles(m_pDrawingElements, this);
	m_DrawBoard.DrawPushPoint(m_pDrawingElements, this);

	CDialog::OnPaint();
	}

}
</code></pre>
<p>Dabei ist CDrawBoard eine Klasse, in welcher meine Zeichungsroutinen stehen (mit dcMoveTo, LineTo usw.) und m_DrawBoard ist meine Variable vom Typ CDrawBoard, um die Routinen aufzurufen...</p>
<p>Über die m_pDrawingElements rufe ich gespeicherte Koordinaten ab...</p>
<p>Mapping Modes???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159437</guid><dc:creator><![CDATA[Elchsfell]]></dc:creator><pubDate>Mon, 23 Oct 2006 11:17:40 GMT</pubDate></item></channel></rss>