Einzelnen Beitrag anzeigen

Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#9

Re: Zeichenfläche begrenzen/schützen

  Alt 30. Mai 2005, 16:05
Ich hab mich jetzt durch den Code von DelphiX gekämpft und bin soweit gekommen:

Delphi-Quellcode:
procedure TMyImageSprite.DoDraw;
var DestRect, SrcRect: TRect;
begin
  DestRect := Rect(max(BoundsRect.Left, Trunc(Parent.X)),
                   max(BoundsRect.Top, Trunc(Parent.Y)),
                   min(BoundsRect.Right, Trunc(Parent.X) + Parent.Width),
                   min(BoundsRect.Bottom, Trunc(Parent.Y) + Parent.Height));
  SrcRect := DestRect;
  OffsetRect(SrcRect, -BoundsRect.Left, -BoundsRect.Top);
  Engine.Surface.DrawAlpha(DestRect, SrcRect, Image.PatternSurfaces[0], false, 200);
end;
Als Clipping-Box wird hier ein TSprite (ohne Bild) verwendet, das beim Erstellen der Items als Parent mitgegeben wird)

Ich denke das dieser Code ausreichend effektiv ist, da DelphiX das Zeichnen intern ähnlich erledigt. Nur die erste Zeile (ok ersten vier Zeilen in dem Fall) kommt dazu und die sieht ja noch irgendwie erträglich aus.

Wenn das noch jemand benutzen will, sollte ich vielleicht vorwarnen:
Das Beispiel geht davon aus das Bildgröße und Spritegröße übereinstimmen und zeichnet das Bild immer ohne Transparenz (..aces[0], false, 20...) und mit einem Alpha von 200 (.., false, 200); )
Während sich die letzten beiden Sachen relativ leicht ändern lassen müsste eine Animation mit mehreren Frames bzw. ein Bild das kleiner oder größer ist als das Sprite (tiled := true, ...) nachgerüstet werden
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat