wieso wird image schwarz beim mausklick

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
OSchr
Beiträge: 17
Registriert: Di 6. Okt 2015, 17:58

wieso wird image schwarz beim mausklick

Beitrag von OSchr »

Hallo,
wenn ich das Programm starte, ich das Image weiß.
Klicke ich einmal rein, wird das gesamte Image Schwarz???
Warum?

Code: Alles auswählen

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if button = mbLeft then
     Image1.Canvas.MoveTo(x,y)
  else begin
    Image1.Canvas.Ellipse(x-2,y-2,x+2,y+2);
    Image1.Canvas.TextOut(x,y,Format('(%d:%d)',[x,y]));
  end;
end;         


Der Klick mit der rechten Maustaste zeigt aber die Koordinaten in Weiß mit schwarzer Schrift....
Dankeschön

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: wieso wird image schwarz beim mausklick

Beitrag von theo »

Wieso weiß ich auch nicht genau.
Du kannst das Problem aber lösen, indem du bei z.B. Form OnCreate das machst:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.Canvas.Brush.Color:=clBtnFace;
 Image1.Canvas.FillRect(Image1.ClientRect);
end;

OSchr
Beiträge: 17
Registriert: Di 6. Okt 2015, 17:58

Re: wieso wird image schwarz beim mausklick

Beitrag von OSchr »

Danke!!!! Super!! Klappt so!!!

BeniBela
Beiträge: 320
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: wieso wird image schwarz beim mausklick

Beitrag von BeniBela »

vielleicht ist es angebrannt?

Warf
Beiträge: 2122
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: wieso wird image schwarz beim mausklick

Beitrag von Warf »

theo hat geschrieben:Wieso weiß ich auch nicht genau.
Du kannst das Problem aber lösen, indem du bei z.B. Form OnCreate das machst:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.Canvas.Brush.Color:=clBtnFace;
 Image1.Canvas.FillRect(Image1.ClientRect);
end;
Das liegt daran das Textout einen hintergrund hat, den Brush. Mit deiner Variante wird nur halt der Brush (Standard Weiß) auf clbtnface gesetzt, und vor dem zeichnen nicht mehr verändert wird. nutzt man:

Code: Alles auswählen

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if button = mbLeft then
     Image1.Canvas.MoveTo(x,y)
  else begin
    Image1.Canvas.Brush.Style:=bsNone;
    Image1.Canvas.Ellipse(x-2,y-2,x+2,y+2);
    Image1.Canvas.TextOut(x,y,Format('(%d:%d)',[x,y]));
  end;
end;  
Sollte das ganze auch funktionieren, da man damit den Brush für die Zeichnung einfach komplett deaktiviert

Antworten