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:
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