Hallo,
da macht mich in Deinem Code doch so einiges nachdenklich:
Delphi-Quelltext
1: 2: 3: 4: 5:
| finally Unlock temp.SaveToFile('C:\RTF.bmp'); |
damit dürfte nicht mal ein leere bmp-Datei erzeugt werden,
denn hinter
Unlock fehlt ein Semikolon und Delphi wird eine Fehlermeldung ausgeben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| pen.Color := BorderColor; rectangle(BorderWidth - 1, BorderWidth - 1, bdr.Width, bdr.Height); end; end;
var bmp : TBitmap; begin bmp := RTFtoBitmap(RichEdit1,2); MakeBorder(bmp,2,clBlue); Image1.Canvas.Draw(5,5,bmp); bmp.free; end; |
bei der Zeile
var bmp : TBitmap; wird Delphi auch eine Fehlermeldung ausgeben.
Kann es sein das Du den Code erst garnicht zum Laufen gebracht hast,
weil Du nicht weist wie Du die Funktion in deinen Code integrieren kannst
Vorab, der Code von den Schweitzern läuft einwandfrei.
Also ist folgendes zu erledigen:
1. Die Unit RichEdit in uses einbinden:
Delphi-Quelltext
1: 2: 3: 4:
| interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RichEdit; |
2. die Funktionen/Procedur in deine Unit kopieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| implementation {$R *.DFM} function CreateEmptyBmp(myColor : TColor; Width,Height : Integer) : TBitmap; begin end;
function RTFtoBitmap(myRTF: TRichEdit; GiveSpaceForBorder: Integer): TBitmap; var myRect: TRect; temp: TBitmap; begin end;
procedure MakeBorder(const bdr: TBitmap; BorderWidth: Integer; BorderColor: TColor); begin end; |
(die Funktion
CreateEmptyBmp findest Du im ersten Kommentar zu dem Tipp bei den Schweitzern)
3. Die Funktion aufrufen:
Die Funktion
RTFtoBitmap(myRTF: TRichEdit; GiveSpaceForBorder: Integer): TBitmap; gibt Dir als Ergebnis ein TBitmap zurück.
3.1 In einem Image ausgeben:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Image1.Canvas.Draw(5,5,RTFtoBitmap(RichEdit1,2)); end; |
3.2 In einem Image mit Border ausgeben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button2Click(Sender: TObject); var bmp : TBitmap; begin bmp := RTFtoBitmap(RichEdit1,2); MakeBorder(bmp,2,clBlue); Image1.Canvas.Draw(5,5,bmp); bmp.free; end; |
3.3 Direkt in eine Datei speichern:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.Button4Click(Sender: TObject); begin RTFtoBitmap(RichEdit1,2).SaveToFile('C:\temp\RTF.bmp'); end; |