Autor Beitrag
omega123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 11.10.02 23:44 
hi

habe ein image in das ich ein *.bmp file lade.
nun schreibe ich mit diesem code



ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedure Tform1.show(Sender: TObject); 
var 
x,y : integer; 
begin 
x := FlatSpinEditInteger1.Value; 
y := FlatSpinEditInteger4.value; 
   image1.Canvas.Font.Color := clblue; 
   image1.Canvas.Brush.Style := bsclear; 
   image1.Canvas.Font.Size := 13; 
   image1.Canvas.TextOut(x,y,'hallo'); 
end;


etwas hinein, das klappt auch wunderbar, nur wenn ich nun die x bzw y position verändern will, schreibt er den text wieder neu und ich habe nun an 2 stellen den selen text stehen, ich möchte aber, wenn ich die x bzw y positrion veränder, der text sich verschiebt.
dieses soll dann später als *.jpg gespeichert werden.

hoffe ihr könnt mir da weiterhelfen!?

danke schonmal im vorraus
Visum
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106



BeitragVerfasst: Sa 12.10.02 13:44 
Hi,
da die Canvas mit TextOut('Bla') verändert wird, kannst du es nicht rückgängig machen und somit den Text auch nicht verschieben.

Ich denke, es gibt mehrere Möglichkeiten, das zu lösen.
1) Erstell ein weiteres Image, mach es transparent und schreibe den Text da rein. Dieses Image kannst du dann verschieben.
z.B. mit:
Image2.top:=Image1.Top + Y;
Image2.Left:=Image1.Left + X;
Vor dem Abspeichern fügst du die zwei Images dann zusammen (mit canvas.draw).

2) Vor dem neuen schreiben könntest du die BMP neu in das Image laden, dann den Text schreiben. Das könnte allerdings flackern und ist wohl ziemlich langsam.

3) Erstell eine Bitmap:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var Bild:TBitmap;
begin
Bild:=Tbitmap.create;
Bild.Loadfromfile('Bla.bmp');
...
end;


Und zeichne diese Bitmap immer wieder vor dem Text in das Canvas des Images. Dadurch sparst du dir das neuladen. Der Text kommt weiterhin in das Image, könnte aber auch in eine andere Bitmap verlegt werden. Das wäre dann wieder etwas schneller.

Sollte es flackern:
form1.doublebuffered:=true;

Speichern kannst du das ganze dann mit
Image1 {Das mit dem Text} .Picture.Savetofile('MeinBildmitText.jpg');
Dazu findest du hier im Forum oder in der Hilfe mit sicherheit mehr.

alles, was jetzt falsch ist, darf verbessert werden ;)
visum