<?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[Linie zeichnen]]></title><description><![CDATA[<p>Hallo, muss einen Kompass simulieren und dazu müsste ich wissen, wie man eine Linie zeichnet. Kann mir da einer ein Beispiel zeigen? Besten Dank! Gruß daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/146131/linie-zeichnen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 08:08:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/146131.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 May 2006 13:27:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linie zeichnen on Thu, 04 May 2006 13:27:20 GMT]]></title><description><![CDATA[<p>Hallo, muss einen Kompass simulieren und dazu müsste ich wissen, wie man eine Linie zeichnet. Kann mir da einer ein Beispiel zeigen? Besten Dank! Gruß daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050892</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Thu, 04 May 2006 13:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Thu, 04 May 2006 13:38:22 GMT]]></title><description><![CDATA[<p>Dafür kannst du die GDI+ Library benutzen, hier ist ein Einsteigerartikel:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-128603.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-128603.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050899</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 04 May 2006 13:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 07:39:52 GMT]]></title><description><![CDATA[<p>Hallo,<br />
besten Dank für den Link! Bin beim einbinden der GDI+ auf Probleme gestoßen. Dabei habe ich folgende Bescheibung verwendet:</p>
<p><a href="http://www.codersource.net/mfc_gdi_plus_common_issues.html" rel="nofollow">http://www.codersource.net/mfc_gdi_plus_common_issues.html</a></p>
<p>Wo genau muss ich</p>
<pre><code>private:
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
</code></pre>
<p>platzieren? Wenn ich es in</p>
<pre><code>class CAttitude_3App : public CWinApp
{

private:
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
</code></pre>
<p>einfüge, bekomme ich folgende Fehlermeldung:</p>
<blockquote>
<p>error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_gdiplusStartupInput'<br />
error C2501: 'GdiplusStartupInput' : Fehlende Speicherklasse oder Typbezeichner<br />
error C2501: 'm_gdiplusStartupInput' : Fehlende Speicherklasse oder Typbezeichner<br />
error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_pGdiToken'<br />
error C2501: 'ULONG_PTR' : Fehlende Speicherklasse oder Typbezeichner</p>
</blockquote>
<p>Gruß<br />
daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051239</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Fri, 05 May 2006 07:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 08:08:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich</p>
<pre><code>GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&amp;gdiplusToken, &amp;gdiplusStartupInput, NULL);

GdiplusShutdown(gdiplusToken);
</code></pre>
<p>aufrufe im Programm, dann erhalte ich folgende Fehlermeldung:</p>
<blockquote>
<p>error C2065: 'GdiplusStartupInput' : nichtdeklarierter Bezeichner<br />
error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'gdiplusStartupInput'<br />
error C2065: 'gdiplusStartupInput' : nichtdeklarierter Bezeichner<br />
error C2065: 'GdiplusStartup' : nichtdeklarierter Bezeichner<br />
error C2065: 'GdiplusShutdown' : nichtdeklarierter Bezeichner</p>
</blockquote>
<p>Warum erkennt er <em>GdiplusStartupInput</em> nicht, obwohl alle *.h Dateien als exteren Abhängigkeiten angezeigt werden .. auch die <em>gdiplusinit.h</em> ?!?!</p>
<p>Gruß<br />
daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051265</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Fri, 05 May 2006 08:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 09:27:53 GMT]]></title><description><![CDATA[<p>Hast du auch den Namespace Gdiplus benutzt????? Hast wohl meinen Artikel doch nicht gelesen? Oder wenigstens die GDI+ Dokumentation?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051341</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 05 May 2006 09:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 10:31:18 GMT]]></title><description><![CDATA[<p>Funktioniert .. Besten Dank! Wie kann ich eigentlich meine Dialogoberfläche als Ausgabe für die Zeichenjobs definieren?</p>
<pre><code>Graphics graphics(??????);
</code></pre>
<p>Die ID vom Dialog lautet IDD_ATTITUDE_3_DIALOG, aber das läuft so nicht ?!?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051410</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Fri, 05 May 2006 10:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 11:32:32 GMT]]></title><description><![CDATA[<p>Das hat mit der ID nichts zu tun. Du mußt in deiner OnPaint()-Methode deine Grafik zeichnen bzw. diese Methode wird immer aufgerufen, um den Dialog zu zeichnen. Jede Klasse die von CView abgeleitet ist, stellt dir einen Gerätekontext (Device Context) zur Verfügung. Da CDialog von CView abgeleitet ist kannst du den Kontext einfach holen.</p>
<p>Ein Bsp.:</p>
<pre><code class="language-cpp">void MyCDialog::OnPaint()
{
    CDialog::OnPaint(); // Super-Methode einmal aufrufen, sonst gibts 100% CPU-Auslastung
    Gdiplus::Graphics g(GetDC()); // Graphics zeichnet jetzt auf dem DC von MyCDialog
    // ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1051447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051447</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 05 May 2006 11:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 11:49:34 GMT]]></title><description><![CDATA[<p>sorry, bin nicht so fit mit C++ ..</p>
<p>habe mal meine OnPaint angefügt ..</p>
<pre><code>void CAttitude_3Dlg::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
	{
		CDialog::OnPaint();
		// Hier erhalte ich einen Fehlermeldung
                Gdiplus::Graphics g(GetDC()); // Graphics zeichnet jetzt auf dem DC von MyCDialog 
	}
}
</code></pre>
<p>Was folgende Fehlermeldung verursacht ..</p>
<blockquote>
<p>error C2664: '__thiscall Gdiplus::Graphics::Gdiplus::Graphics(struct HDC__ *)' : Konvertierung des Parameters 1 von 'class CDC *' in 'struct HDC__ *' nicht moeglich<br />
Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat</p>
</blockquote>
<p>Bei mir gibt es einen Button RUN ..</p>
<pre><code>void CAttitude_3Dlg::OnRun()
{
// Start GDI+
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&amp;gdiplusToken, &amp;gdiplusStartupInput, NULL);

// Kompasszeiger
paint_kompass(????)

// Stop GDI+
GdiplusShutdown(gdiplusToken);
}
;
</code></pre>
<p>bei dem ich die Methode paint_kompass ausführen möchte ..</p>
<pre><code>void paint_kompass(Gdiplus::Graphics &amp;g) {
	Pen pen(Color::Black, 1);
	g.DrawEllipse(&amp;pen, 340, 340, 400, 400);

	g.TranslateTransform(50, 50);
	// alle 30° ein kleiner Strich damit alle 12 voll werden
	for(int i=0; i&lt; 360; i = i + 45) {
		g.RotateTransform(30.0f);
		g.DrawLine(&amp;pen, 0, 45, 0, 50);
	}
}
</code></pre>
<p>hoffe Du kannst mir helfen, damit ich mit <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> ins WE gehen kann !!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051471</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Fri, 05 May 2006 11:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 12:16:36 GMT]]></title><description><![CDATA[<p>ARGH! Das nächste mal schau ich vorher in die Doku! Graphics erwartet einen HDC, probier bitte mal folgendes aus:</p>
<pre><code class="language-cpp">Gdiplus::Graphics g( GetDC()-&gt;GetSafeHdc() );
</code></pre>
<p>Ich hoffe es funktioniert, kanns hier leider nicht ausprobieren. Ansonst mußt du warten bis jemand anders es ausprobiert oder am Sa. bin ich zu Hause an meinem PC.</p>
<p>In deiner OnRun() initialisierst du bei jedem Knopfdruck die GDI+ neu (GdiplusStartup), was nicht nötig ist. Mach das einmalig in deiner CWinApp (?) Klasse und gut ist.</p>
<p>paint_kompass() mußt du in der OnPaint() aufrufen, da wird ja alles gezeichnet.</p>
<pre><code class="language-cpp">void CAttitude_3Dlg::OnPaint()
{
   // ...
   else
   {
        CDialog::OnPaint();
        Gdiplus::Graphics g(GetDC()-&gt;GetSafeHdc());

        if(kompass_zeichnen)
           paint_kompass(g);
    }
}
</code></pre>
<p>Um zu entscheiden ob der Kompass gezeichnet werden soll, mußt du dir irgendwie eine bool Variable in deiner CAttitude_3Dlg-Klasse anlegen, die du per Run-Button auf true oder false schaltest. Ich denke mal, das willst du erreichen? In dem obigen Bsp. anhand der kompass_zeichnen Variable... mußt du selber entscheiden, wie du das lösen willst.</p>
<p>Am besten noch eine eigenen Kompass-Klasse schreiben, die nur für das Zeichnen zuständig ist... so wie es auch in meinem clock-Beispiel der Fall ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051483</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 05 May 2006 12:16:36 GMT</pubDate></item><item><title><![CDATA[Reply to Linie zeichnen on Fri, 05 May 2006 12:51:18 GMT]]></title><description><![CDATA[<p>Funktioniert .... Besten DANK und schönes WE!!<br />
Gruß<br />
daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1051516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1051516</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Fri, 05 May 2006 12:51:18 GMT</pubDate></item></channel></rss>