Einzelnen Beitrag anzeigen

Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Paintbox, Scrollbox und GDI

  Alt 22. Jun 2009, 16:21
Versuchsweise hab ich jetzt mal den Preparecanvas aus dem OnPaint entfernt und nur im Create bzw. Zoom aufgerufen. Dann wird aber meine Grafik gar nicht mehr gezoomt.
Leider finden sich ja in dem Bereich verdammt wenige bis keine Beispiele.

Anbei die geänderte Version, nicht dass ich noch einen anderen Fehler drinhab.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  scale:=scale div 2;
  preparecanvas(PaintBox1.Canvas);
  PaintBox1.Width:=PaintBox1.Width div 2;
  PaintBox1.Height:=PaintBox1.Height div 2;
  preparecanvas(PaintBox1.Canvas);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  scale:=scale*2;
  preparecanvas(PaintBox1.Canvas);
  PaintBox1.Width:=PaintBox1.Width*2;
  PaintBox1.Height:=PaintBox1.Height*2;
// preparecanvas(PaintBox1.Canvas);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  scale:=1;
  preparecanvas(PaintBox1.Canvas);
end;

procedure TForm1.PrepareCanvas(Canvas: TCanvas);
begin
  SetGraphicsMode(PaintBox1.Canvas.handle, GM_ADVANCED);
  setMapMode(PaintBox1.Canvas.Handle, MM_ISOTROPIC);

  SetWindowExtEx(Canvas.Handle, Round(400), Round(300), nil);

  SetViewportExtEx(Canvas.Handle, round(400*scale), round(300*scale), nil);
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
// preparecanvas(PaintBox1.Canvas);
  PaintBox1.Canvas.Pen.Color:=clBlue;
  PaintBox1.Canvas.Rectangle(10,10,100,100);
  PaintBox1.Canvas.Pen.Color:=clRed;
  PaintBox1.Canvas.Rectangle(300,10,399,100);
end;
  Mit Zitat antworten Zitat