ورود

View Full Version : render a TRichEdit text onto a canvas را به صورت یک برنامه دلفی در بیاورید



ali_abbasi22145
یک شنبه 18 آذر 1386, 15:18 عصر
سلام
من نتوانستم render a TRichEdit text onto a canvas را به صورت یک برنامه دلفی در بیاورم آیا کسی می تواند.
اینهم لینک سایتش:
http://www.swissdelphicenter.ch/en/showcode.php?id=2146

...render a TRichEdit text onto a canvas//

uses RichEdit;


procedure RichEditToCanvas(RichEdit: TRichEdit; Canvas: TCanvas; PixelsPerInch: Integer);
var
ImageCanvas: TCanvas;
fmt: TFormatRange;
begin
ImageCanvas := Canvas;
with fmt do
begin
hdc:= ImageCanvas.Handle;
hdcTarget:= hdc;
// rect needs to be specified in twips (1/1440 inch) as unit
rc:= Rect(0, 0,
ImageCanvas.ClipRect.Right * 1440 div PixelsPerInch,
ImageCanvas.ClipRect.Bottom * 1440 div PixelsPerInch
);
rcPage:= rc;
chrg.cpMin := 0;
chrg.cpMax := RichEdit.GetTextLen;
end;
SetBkMode(ImageCanvas.Handle, TRANSPARENT);
RichEdit.Perform(EM_FORMATRANGE, 1, Integer(@fmt));
// next call frees some cached data
RichEdit.Perform(EM_FORMATRANGE, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RichEditToCanvas(RichEdit1, Image1.Canvas, Self.PixelsPerInch);
Image1.Refresh;
end;

A.Nemati
یک شنبه 18 آذر 1386, 15:45 عصر
چرا نتونستید؟
به خوبی جواب داد.
البته کد شما رو تست نکردم. کدی که در لینک سایتش بود تست کردم و به خوبی جواب داد!

A.Nemati
یک شنبه 18 آذر 1386, 15:49 عصر
اینم برنامه کوچک تستی از همین سایت.

nassim_20
یک شنبه 13 اردیبهشت 1388, 13:07 عصر
این کد تنها محتویاتی رو به تصویر تبدیل میکند که دیده میشه اگر متن ریچ ادیت زیاد باشه و نیاز به اسکرول پیدا کنه و یا اینکه ارتفاع ریچ ادیت زیادتر از مونیتور باشه رو به تصویر تبدیل نمیکنه
برای حل این مشکل چکار باید کرد