<?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[Rahmen in TImage]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte in einem TImage einen Auswahlrahmen zeichnen. Dazu merke ich mir bei MouseDown die Koordinaten und zeichne bei MouseMove ein FrameRect, falls die linke Taste noch gedrückt ist. Meine Frage ist nun, ob es eine Möglichkeit gibt, den alten Rahmen wieder zu löschen, wenn die Mouse bewegt wird, da sich sonst durch die Bewegung eine weißes Rechteck ergibt. Ich möchte also das alte Rechteck löschen, wenn ein neues gezeichnet wird. Im &quot;Hintergrund&quot; des Image befindet sich ein mit LoadFromFile geladenes Bitmap.</p>
<p>Gruss Lodo2609</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195843/rahmen-in-timage</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 10:28:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195843.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Oct 2007 15:45:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rahmen in TImage on Mon, 22 Oct 2007 15:45:21 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich möchte in einem TImage einen Auswahlrahmen zeichnen. Dazu merke ich mir bei MouseDown die Koordinaten und zeichne bei MouseMove ein FrameRect, falls die linke Taste noch gedrückt ist. Meine Frage ist nun, ob es eine Möglichkeit gibt, den alten Rahmen wieder zu löschen, wenn die Mouse bewegt wird, da sich sonst durch die Bewegung eine weißes Rechteck ergibt. Ich möchte also das alte Rechteck löschen, wenn ein neues gezeichnet wird. Im &quot;Hintergrund&quot; des Image befindet sich ein mit LoadFromFile geladenes Bitmap.</p>
<p>Gruss Lodo2609</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390071</guid><dc:creator><![CDATA[lodo2609]]></dc:creator><pubDate>Mon, 22 Oct 2007 15:45:21 GMT</pubDate></item><item><title><![CDATA[Reply to Rahmen in TImage on Mon, 22 Oct 2007 15:51:10 GMT]]></title><description><![CDATA[<p>Dafür gibt es die Canvas-Methode DrawFocusRect (diese arbeitet intern mit einer XOR-Verknüpfung, so daß bei 2 maligem Aufruf wieder das Original dargestellt wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390073</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 22 Oct 2007 15:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to Rahmen in TImage on Tue, 23 Oct 2007 12:43:20 GMT]]></title><description><![CDATA[<p>so richtig funktioniert das nicht mit DrawFocusRect. Hier mal mein Code</p>
<pre><code class="language-cpp">void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
	 RectofInterest.x = X;
	 RectofInterest.y = Y;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
	  if (Shift.Contains(ssLeft)) {
          TRect Rect;
          Rect.Left = RectofInterest.x;
          Rect.Top = RectofInterest.y;
		  Rect.Right = X;
		  Rect.Bottom = Y;
          Image1-&gt;Canvas-&gt;DrawFocusRect(Rect);
		  //Image1-&gt;Repaint();
		  //Image1-&gt;Canvas-&gt;FrameRect(Rect);
   }
}
</code></pre>
<p>Wenn ich das Auswahlfenster größer mache(die Mouse bewege), bleibt immer noch ein Teil des alten Rechteck zu sehen. Was mache ich falsch?</p>
<p>Gruss Lodo2609</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390531</guid><dc:creator><![CDATA[lodo2609]]></dc:creator><pubDate>Tue, 23 Oct 2007 12:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Rahmen in TImage on Tue, 23 Oct 2007 15:01:38 GMT]]></title><description><![CDATA[<p>Du mußt vor dem Neu-Zeichen nochmal DrawFocusRect für das alte Rechteck aufrufen (d.h. dieses mußt du speichern).</p>
<pre><code class="language-cpp">if (Shift.Contains(ssLeft))
{
    Image1-&gt;Canvas-&gt;DrawFocusRect(RectofInterest); // alte löschen

    RectOfInterest.Right = X;
    RectOfInterest.Bottom = Y;
    Image1-&gt;Canvas-&gt;DrawFocusRect(RectOfInterest); // neu zeichnen
}
</code></pre>
<p>Evtl. mußt du noch eine Abfrage einfügen, falls es noch kein RectOfInterest gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390633</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Tue, 23 Oct 2007 15:01:38 GMT</pubDate></item></channel></rss>