Inhalt von TRichEdit als Grafik



  • Hallo ihr!

    Ich stehe vor dem Problem, den Inhalt eines TRichEdit in eine Grafik kopieren zu müssen. Hier im Forum habe ich nur den Ansatz eines umgekehrten Problems gefunden, nämlich eine Canvas für das TRichEdit zu erzeugen und darauf zu zeichnen.

    Die Methode PaintTo zeichnet mir ein wunderschönes Rechteck (den Rahmen des TRichEdit) aber leider nicht den Inhalt.

    Kann mir da jemand helfen?

    Christian



  • Mit CopyRect kannst du den vom RichEdit belegten Ausschnitt des Form-Canvas direkt auf ein Image- oder Bitmap-Canvas übertragen.



  • Leider funktioniert das nicht. Davon abgesehen, dass die Farben falsch sind und das Bild etwas verzerrt ist, habe ich wieder nur Rahmen, aber keinen Inhalt.

    Christian



  • Schau mal in der Hilfe zu TRichEdit->PaintTo()

    Da koennte helfen!? 😉



  • Siehe einleitende Darstellung des Problems: Der Rahmen des TRichEdit wird gezeichnet, nicht jedoch der Inhalt.

    Christian



  • Image1->Width = RichEdit1->Width;
      Image1->Height = RichEdit1->Height;
      TRect R = Rect(RichEdit1->Left, RichEdit1->Top,
                     RichEdit1->Left + RichEdit1->Width,
                     RichEdit1->Top + RichEdit1->Height);
      Image1->Canvas->CopyRect(Image1->ClientRect, Canvas, R);
    

    Funktioniert 100pro.



  • Danke, Jansen, für den Quellcode. Ich habe festgestellt, wo das Problem lag:

    Das TRichEdit liegt auf einer Seite eines TabbedNotebook. Der Button, der für das Speichern verantwortlich war, liegt auf einer anderen Seite.

    Um das RichEdit zu speichern, mußte ich also erst auf die andere Seite schalten, speichern und wieder zurückschalten. Es stellte sich heraus, daß die Zeit, die ich auf der Seite mit dem RichEdit verweilte, zu kurz war, um alles zu erfassen. Jetzt warte ich mit Sleep(1000). Diese Zeit ist ausreichend.

    Nun muss ich noch sehen, ob ich mit waitfor(irgendwas) warten kann, bis CopyRect fertig ist oder so. Das ist wohl sauberer 😉

    Christian


Anmelden zum Antworten