vím, že to není úplně moc zajímavé téma, ale snad někdo pomůže.
snažím se vykreslit RTF text z RichEdit na canvas TImage, protože ho potřebuji vypsat na pozadí s BitMapou a TRichEdit nemá průhledny pozadí.
napsal jsem:
- Kód: Vybrat vše
procedure TForm1.PrekresliRE;
var
i: integer;
begin
for i := 1 to length(RichEdit1.Text) - 1 do
begin
if RichEdit1.Text[i] = #13 then
with Image1.Canvas do
MoveTo(0, PenPos.Y + TextHeight(RichEdit1.Lines.Strings[0]));
RichEdit1.SelStart := i;
RichEdit1.SelLength := 1;
with Image1.Canvas do
begin
Font.Color := RichEdit1.SelAttributes.Color;
Font.Size := RichEdit1.SelAttributes.Size;
Font.Style := RichEdit1.SelAttributes.Style;
if (RichEdit1.Text[i] <> #13) and (char(RichEdit1.Text[i]) <> #10) then
TextOut(PenPos.X+1, PenPos.Y, RichEdit1.Text[i]); // k X jsem musel přidat 1px, jinak se písmena překrývají.
end;
end;
end;
když to místo na canvas vkládám do TLabelu
- Kód: Vybrat vše
with Label1 do
begin
Font.Color := RichEdit1.SelAttributes.Color;
Font.Size := RichEdit1.SelAttributes.Size;
Font.Style := RichEdit1.SelAttributes.Style;
if (RichEdit1.Text[i] <> #13) and (char(RichEdit1.Text[i]) <> #10) then
Label1.Caption:= Label1.Caption + RichEdit1.Text[i]; // k X jsem musel přidat 1px, jinak se písmena překrývají.
end;
když zkusím ve FormCreate nakreslit na Image1 barevnej obdelník, tak je pozadí písmen průhledny.
nemáte někdo prosím představu, jak to udělat, aby to vypadalo dobře ??
další podivnost je, že musím u hodnoty X v TextOut přidávat 1px, jinak jsou ty písmena přes sebe.
asi je to jasný, ale jen pro jistotu.
úplně nahoře je TImage, v jeho spodní části je TLabel a pod něma, dole je TRichEdit.
prosím pomoc ...
-- 29. 8. 2017 13:53 --
nepotřebuju úplně překreslovat na TCanvas, ale jiny řešení mě nenapadá ..