TImage, Text und Rectangle

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

TImage, Text und Rectangle

Beitrag von Mathias »

Bei folgenden Code, wird ein Text und ein Rechteck in die Image gezeichnet.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('project1.ico');
  Image1.Picture.Bitmap.Canvas.Brush.Style := bsClear;
  Image1.Picture.Bitmap.Canvas.TextOut(10, 10, 'Hello world');
  Image1.Picture.Bitmap.Canvas.Rectangle(15, 15, 40, 40); // ominöse Zeile
end
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.SaveToFile('test.png');
end;   

Entferne ich aber das Rechteck, dann wird komischerweise auch keinen Text ausgegeben.
Drücke ich aber den Button, und öffne die Test.png, ist dort der Text vorhanden. :roll:

Warum ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: TImage, Text und Rectangle

Beitrag von Timm Thaler »

Canvas.Draw(0, 0, Image1);

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TImage, Text und Rectangle

Beitrag von Mathias »

Geht nicht, wen schon müsste es

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Draw(0,0,Image1.Picture.Bitmap);
end;     
heissen.
Dies macht aber nichts anderes, als die Bitmap der Image an einem anderen Ort zu zeichnen.
Aber leider hat diese Funktion der gleiche Neben-Effekt mit dem Rechteck.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten