GLScene Bild verschieben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich bekomme es einfach nicht hin das ich mit der rechten Maustaste das Bild in GLScene verschieben kann, also den Null Punkt nach links oder rechts o/u verschieben kann. Mit GLSceneViewer1MouseWheel kann ich Zoomen Mit GLSceneViewer1MouseMove kann ich überall hin drehen. Aber verschieben, das bekomme ich nicht hin. Kann mir jmd von euch einen Tipp geben ? Mfg Schuby
Delphi-Quellcode:
//================================================
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mx:= x; my:= y; end; //================================================ procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Shift=[ssLeft] then Begin GLCamera1.MoveAroundTarget(my-y,mx-x); end; { if Shift=[ssRight] then Begin ????????????? end; } mx:= x; my:= y; end; //================================================ procedure TForm1.GLSceneViewer1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); var step: Double; begin if GLCamera1.FocalLength >= 20 then begin xx:= (WheelDelta / 20); GLCamera1.FocalLength:= GLCamera1.FocalLength + (step); // Edit1.Text:= FloatToStr(GLCamera1.FocalLength); end else begin GLCamera1.FocalLength:= 21; end; end; |
AW: GLScene Bild verschieben
|
AW: GLScene Bild verschieben
Bei mir funktioniert es so.
Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if shift=[ssRight] then begin mx:=x; my:=y; end; end; procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var xx, yy: Single; pl: TGLCoordinates3; begin if shift=[ssRight] then begin xx:=GLCamera1.Position.x; yy:=GLCamera1.Position.y; GLCamera1.Position.x:=xx+(my-y)/20; GLCamera1.Position.y:=yy+(mx-x)/20; mx:=x; my:=y; end; end; |
AW: GLScene Bild verschieben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Ydobon,
mit DummyCube2 gehts bei mir. Ich denke ich habe die Camera nicht richtig eingestellt. mfg
Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin // mx:= x; // my:= y; if shift=[ssRight] then begin mx:=x; my:=y; end; end; //============================================================================== procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var xx, yy: Single; pl: TGLCoordinates3; begin // if Shift=[ssLeft] then // Begin // GLCamera1.MoveAroundTarget(my-y,mx-x); // end; if shift=[ssRight] then begin xx:=GLDummyCube2.Position.x; //GLDummyCube2 GLDummyCube2 GLCamera1 yy:=GLDummyCube2.Position.y; GLDummyCube2.Position.x:=xx+(my-y)/20; GLDummyCube2.Position.y:=yy+(mx-x)/20; mx:=x; my:=y; end; end; |
AW: GLScene Bild verschieben
eine Möglichkeit wäre noch
Delphi-Quellcode:
private
{ Private-Deklarationen } picked_object:TGlBaseSceneObject;
Delphi-Quellcode:
procedure TForm39.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin picked_object:=GLSceneViewer1.Buffer.GetPickedObject(X,Y); end; procedure TForm39.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var pp:TVector3f; begin if (Assigned(picked_object)) and (Shift=[ssRight]) then begin pp:=GLSceneViewer1.Buffer.ScreenToWorld(x,y); picked_object.Position.x:=pp.x; picked_object.Position.y:=pp.y; end; end; procedure TForm39.GLSceneViewer1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin picked_object:=nil; end; end. |
AW: GLScene Bild verschieben
@mmw
var pp : TVector3f; <== damit komme ich nicht klar, kannst du helfen ? mfg |
AW: GLScene Bild verschieben
hallo,
die Unit ist GLS.VectorTypes |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz