Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Memo in Image.Canvas zeichnen? (https://www.delphipraxis.net/49617-memo-image-canvas-zeichnen.html)

Masenko 13. Jul 2005 20:05


Memo in Image.Canvas zeichnen?
 
Hi,

wie kann ich die Memo.Lines in das Cavas eines Images, mit samt den Tabs, zeichnen?

Habs erst mal damit probiert:

Image1.Canvas.TextOut(50,50,memo1.Text);

123
abc
123
abc
sieht dann nur leider so aus:
123IIabcII123IIabc

danke für Antworten.

Jarmen_Kell 13. Jul 2005 20:48

Re: Memo in Image.Canvas zeichnen?
 
Das müsste dann auch (abstand je nach Schriftgröße) in etwa so aussehen:
Delphi-Quellcode:
var
abstand, I: Integer;

for I:=0 to Memo.Lines.Count-1 do
  Image.Canvas.Textout(x,Abstand*I,Memo.Lines[I]) // x z.B. 50

sniper_w 13. Jul 2005 20:52

Re: Memo in Image.Canvas zeichnen?
 
Wenn du nur das Sichtbares in Memo kopieren willst, dann geht es so: (ungetestet ;))
Delphi-Quellcode:
var dc_M:cardinal;
begin
  dc_M := getdc(Memo1.handle);
  bitblt(image1.picture.bitmap.canvas.handle, 0,0,memo1.width, memo1.height,
         dc_M,0,0);
  releasedc(dc_M);
end;

Jarmen_Kell 14. Jul 2005 11:05

Re: Memo in Image.Canvas zeichnen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Offensichtlich ungetestet ...
Also beim Bitblt fehlt am Ende noch als letzter Parameter "SrcCopy"
Es heißt nur "Image1.Canvas.Handle" ohne den ganzen Kram dazwischen.
Ich hab das ReleaseDc noch nicht benutzt, aber es müsste meiner Meinung nach
"releaseDC(Form1.Handle,dc_M);" heißen.
Ferner wird der Rand des Memos mit hineinkopiert, was nicht so wirklich schön aussieht.

Und das ganze funktioniert nur einmal. (Da weiß ich zZ nicht warum und das ließe sich vermutlich auch beheben)

Masenko 14. Jul 2005 16:59

Re: Memo in Image.Canvas zeichnen?
 
Danke für die Antworten.

Habs wie Jarmen_Kell gesagt hat gemacht.

Hab da aber noch ne Frage:
Wie kann ich jetzt noch die Font-Einstellung des Memos oder auch eines Labels, wenn ich beides auf ein cavas zeichne, übernehmen?

MfG Masenko

Khabarakh 14. Jul 2005 20:10

Re: Memo in Image.Canvas zeichnen?
 
So sollte es gehen:
Delphi-Quellcode:
Canvas.Font.Assign(Memo.Font);
Aber da die VCL dich vor Speicherlecks bewahren will, geht auch folgendes:
Delphi-Quellcode:
Canvas.Font := Memo.Font;
Dabei wird dann wieder Assign aufgerufen :wink: .


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz