Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Canvas Scrollbar machen

  Alt 13. Mär 2011, 23:26
Wie willst Du scollen?
Mit einem "Hand"-Cursor verschieben, über "Buttons" oder gemalte Scollbars?
Letztlich musst Du die Events die Dich interessieren versorgen, in o.g. Beispiel reichst Du Eventhandler nach außen um von dort weiterzumachen.
Du kannst auch alles in Deiner Komponente abfackeln und dort entweder im OnPaint bei allen Malroutinen ein FStartX , FStartY aufzuadieren(oder abzuziehen) oder Du lässt die Routinen wie sie sind und manipulierst das Canvas direkt, hat den Vorteil daß Du Zoom und Rotation auch gleich mit anbieten kannst.

Der Anhang zeigt wie das gehen könnte
Delphi-Quellcode:
Procedure ResetCanvas(ACanvas:TCanvas);
begin
   SetCanvasZoomAndRotation(ACanvas , 1, 0, 0,0);
end;

Procedure SetCanvasZoomAndRotation(ACanvas:TCanvas;Zoom:Double;Angle:Double;CenterpointX,CenterpointY:Double);
var
    form : tagXFORM;
    Winkel:Double;

begin
      Winkel := Grad2Rad(Angle);
      SetGraphicsMode(ACanvas.Handle, GM_ADVANCED);
      SetMapMode(ACanvas.Handle,MM_ANISOTROPIC);
      form.eM11 := Zoom * cos( Winkel);
      form.eM12 := Zoom *Sin( Winkel) ;
      form.eM21 := Zoom * (-sin( Winkel));
      form.eM22 := Zoom * cos( Winkel) ;
      form.eDx := CenterpointX;
      form.eDy := CenterpointY;
      SetWorldTransform(ACanvas.Handle,form);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat