PDA

View Full Version : تبدیل متن در RichEdit به تصویر



parisa2002
شنبه 01 بهمن 1384, 13:12 عصر
سلام
من متنی در RichEdit با فونتها و رنگهای مختلف نوشته ام و می خواهم آنرا به یک Image منتقل کنم به طوری که همان فرمت قلمها . رنگهای آن حفظ شود.
با TextOut منتقل می کند ولی همه متن را با یک نوع قلم و رنگ می نویسد
لطفا مرا راهنمایی کنید
با تشکر

parisa2002
یک شنبه 02 بهمن 1384, 07:46 صبح
ممنونم که راهنماییم کردید.
ولی این کدی که شما فرستادید هر خط را مانند هم می نویسد ولی همانطور که خود شما گفتید می توان در RichEdit در هر خط با رنگها و قلمهای مختلف نوشت که برنامه شما همه را مثل هم می نویسد و در یک خط همه رنگها و قلمها را نشان نمی دهد
با تشکر

Touska
یک شنبه 02 بهمن 1384, 18:03 عصر
ببین این بدردت می خوره :



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;

parisa2002
دوشنبه 03 بهمن 1384, 07:42 صبح
ممنون جناب توسکا
ولی در خط چهارم پیغام خطا می دهد TFormatRange را نمی شناسد

Touska
دوشنبه 03 بهمن 1384, 09:37 صبح
توی uses باید اینها باشند : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Richedit;