Hmm. Habe ich gemacht, zeigt aber keine Wirkung. Das ganze sieht jetzt so aus:
Delphi-Quellcode:
TZoomSpriteengine = class(TSpriteEngine)
private
FZoom: integer;
function GetSurfaceRect: TRect;
procedure SetZoom(const Value: integer);
public
property SurfaceRect Read GetSurfaceRect;
property Zoom: integer Read FZoom Write SetZoom;
end;
{..............}
function TZoomSpriteengine.GetSurfaceRect: TRect;
var
r: TRect;
w, h: integer;
begin
r := inherited SurfaceRect;
w := r.Right - r.Left;
h := r.Bottom - r.Top;
Result := Rect(r.Left - w * Zoom, r.Top - h * Zoom, r.Right + w *
Zoom, r.Bottom + h * Zoom);
end;
procedure TZoomSpriteengine.SetZoom(const Value: integer);
begin
FZoom := Value;
end;
Ich hab noch das Erstellen und die Variablentypen in meinem Programm korrigiert, aber irgendwie gab das keine Änderung. Muss ich da noch eine Funktion aufrufen, um die Einstellungen zu übernehmen? Das Zoomen sieht so aus:
Delphi-Quellcode:
procedure TForm1.ZoomOut(Sender: TObject);
begin
Settings.Zoom := 2;
SpriteEngine.Zoom:=Settings.Zoom;
AdDraw.AdAppl.Setup2DScene(PaintBox1.Width * Settings.Zoom,
PaintBox1.Height * Settings.Zoom);
end;
procedure TForm1.ZoomIn(Sender: TObject);
begin
Settings.Zoom := 1;
SpriteEngine.Zoom:=Settings.Zoom;
AdDraw.AdAppl.Setup2DScene(PaintBox1.Width * Settings.Zoom,
PaintBox1.Height * Settings.Zoom);
end;
Settings ist hier nur eine Hilfsklasse, um allerlei Einstellungen zu verwalten.