Linien neuzeichnen

Für Fragen von Einsteigern und Programmieranfängern...
Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Linien neuzeichnen

Beitrag von Michl »

Warum nimmst Du nicht einfach Deine Zeichenroutine und lässt diese im Ereignis OnPaint zeichnen, siehe theos erste Antwort?!:

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
begin
  DrawCourt;
end; 
und lässt das mit TImage bzw. TBitmap sein?!

EDIT: habe gerade gesehen, dass Du das schon machst. Was aber bezweckst Du damit, den Eventhandler OnPaint auszuschalten???:

Code: Alles auswählen

procedure TForm1.FFormPaint(Sender: TObject);
begin
  ...
  OnPaint:= nil;     
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

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

Re: Linien neuzeichnen

Beitrag von Mathias »

Warum nimmst Du nicht einfach Deine Zeichenroutine und lässt diese im Ereignis OnPaint zeichnen, siehe theos erste Antwort?!:
Ich finde der Umweg über TImage besser, weil die Ausgabe dann auch immer automatisch skaliert wird, wen der Benutzer das Fenster verkleinert oder vergrössert.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Align := alClient;
  Image1.Stretch := True;
  // Grösse deiner Ausgabe bestimmen
  Image1.Picture.Bitmap.Width := 16;
  Image1.Picture.Bitmap.Height := 16;
  // Zeichne igendwas, muss nicht in FormCrate sein.
  Image1.Picture.Bitmap.Canvas.Rectangle(3, 3, Image1.Picture.Bitmap.Width - 3, Image1.Picture.Bitmap.Height - 3);
end;    
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten