<?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[Textbreite im Richedit in Pixel]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem. Ich möchte den Text aus einem Richedit auf einen Canvas übertragen. Dazu ist es notwendig die Textbreite aus dem Richedit in Pixel zu kennen.</p>
<p>Kann mir vielleicht jemand einen Tip geben, wie ich die Breite bekomme?</p>
<p>Danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113798/textbreite-im-richedit-in-pixel</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 11:42:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113798.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Jun 2005 10:33:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 10:33:50 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem. Ich möchte den Text aus einem Richedit auf einen Canvas übertragen. Dazu ist es notwendig die Textbreite aus dem Richedit in Pixel zu kennen.</p>
<p>Kann mir vielleicht jemand einen Tip geben, wie ich die Breite bekomme?</p>
<p>Danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817958</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Mon, 27 Jun 2005 10:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 10:38:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int __fastcall TextWidth(const AnsiString Text);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/817962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817962</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 27 Jun 2005 10:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 10:51:27 GMT]]></title><description><![CDATA[<p>danke aber das liefert mir nur die breite bei einem bestimmten font (du hast im forum hierzu beriets eine frage gestellt, die ich mir auch durchgelesen habe). innerhalb eines richedits kann es aber pro zeile verschiedene fonts geben(rtf!). daher nützt mir dies nicht viel.</p>
<p>ich kann natürlich jede zeile durchgehen und die breite überprüfen, was aber viel zu lange dauern würde (und auch nervig ist, da ich nicht jedes einzelne ziechen anfassen will). gibt es dafür denn keine funktion?</p>
<p>für weitere anregungen wäre ich sehr dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817965</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Mon, 27 Jun 2005 10:51:27 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 11:08:26 GMT]]></title><description><![CDATA[<p>Dann erzeug Dir einen TCanvas, stell die gewünschte Schriftart und -größe ein und verwende TCanvas::TextWidth().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817993</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 27 Jun 2005 11:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 11:12:30 GMT]]></title><description><![CDATA[<p>Joe_M. schrieb:</p>
<blockquote>
<p>Dann erzeug Dir einen TCanvas, stell die gewünschte Schriftart und -größe ein und verwende TCanvas::TextWidth().</p>
</blockquote>
<p>Problem bleibt da ich mehrere Fonts haben kann! Ich glaube das Problem ist nicht so einfach. Ich will das ganze halt nicht unbedingt von Hand machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/817999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/817999</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Mon, 27 Jun 2005 11:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Mon, 27 Jun 2005 11:48:55 GMT]]></title><description><![CDATA[<p>Da ich keine Lösung gefunden habe, habe ich das eben selbst geschrieben. Allerdings (!) ist das eine unelegante und naive Lösung. Ich hätte gerne etwas schnelleres und vorallem sauberes. Vielleicht hat jemand einen Tip:</p>
<pre><code>void richedit_extent(TRichEdit *re,TCanvas *canvas,int &amp;width,int &amp;height) {
  width = height = 0;
  int w(0),h(0);
  for (int i(0);i&lt;re-&gt;Text.Length();++i) {
    re-&gt;SelStart = i;
    re-&gt;SelLength = 1;
    canvas-&gt;Font-&gt;Assign(re-&gt;SelAttributes);
    w += canvas-&gt;TextWidth(re-&gt;SelText);
    h = max(h,canvas-&gt;TextHeight(re-&gt;SelText));
    if (re-&gt;Text[i+1] == '\n') {
      width = max(w,width);
      w = 0;
      height += h;
      if (!h) {
        canvas-&gt;Font-&gt;Assign(re-&gt;DefAttributes);
        height += canvas-&gt;TextHeight(&quot; &quot;);
      }
      h = 0;
    }
  }
  if (re-&gt;Text[re-&gt;Text.Length()] != '\n') {
    height += h;
    if (!h) {
      canvas-&gt;Font-&gt;Assign(re-&gt;DefAttributes);
      height += canvas-&gt;TextHeight(&quot; &quot;);
    }
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/818028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/818028</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Mon, 27 Jun 2005 11:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Tue, 28 Jun 2005 07:47:29 GMT]]></title><description><![CDATA[<p>Hat denn keiner einen Vorschlag oder Hinweis für mich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/818725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/818725</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Tue, 28 Jun 2005 07:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Tue, 28 Jun 2005 08:30:28 GMT]]></title><description><![CDATA[<p>wozu dient der spass?</p>
<p>willst du ein bitmap haben, dann gugge <a href="http://www.swissdelphicenter.ch/de/showcode.php?id=2171" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/818741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/818741</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 28 Jun 2005 08:30:28 GMT</pubDate></item><item><title><![CDATA[Reply to Textbreite im Richedit in Pixel on Tue, 28 Jun 2005 08:40:55 GMT]]></title><description><![CDATA[<p>Sunday schrieb:</p>
<blockquote>
<p>wozu dient der spass?</p>
<p>willst du ein bitmap haben, dann gugge <a href="http://www.swissdelphicenter.ch/de/showcode.php?id=2171" rel="nofollow">hier</a>.</p>
</blockquote>
<p>Also ich will eine Art Textverarbeitung erstellen. Hierfür habe ich eine Textblockfunktion. Der User gibt einen Text in einem Richedit ein, kann diesen formatieren und platziert diesen auf einen Canvas. Das Problem hierbei, der Text im Richedit in einer Zeil hat natürlich je nach Formatierung und Zeilenlänge eine bestimmte Breite. Diese benötge ich, um den Text auf dem Canvas auch so darzustellen, wie er eingegeben wurde. Das Problem ist also nicht, das Bitmap zu erstellen. Das funktioniert ja auch.</p>
<p>Nur wollte ich eine schönere Lösung finden als die die ich oben gepostet habe. Eigentlich geht es mir hier speziell um die Performance! Dein Link bringt mir also nicht viel, da das Problem damit nicht behoben wird.</p>
<p>Trotzdem Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/818750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/818750</guid><dc:creator><![CDATA[konvenienz]]></dc:creator><pubDate>Tue, 28 Jun 2005 08:40:55 GMT</pubDate></item></channel></rss>