Morgen.
Ich hab grad ein Problem.
Ich will die Ansicht in einem TGLScene per Maus drücken, halten und ziehen drehen.
Momentan mache ich das so:
Delphi-Quellcode:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
startpos.X:=X;
startpos.Y:=Y;
Screen.Cursor:=crSizeAll;
end;
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
begin
glsceneviewer1.Camera.RotateAbsolute(Y-startpos.Y, X-startpos.X, 0);
startpos.X:=X;
startpos.Y:=Y;
mouse.cursorpos:=
glsceneviewer1.clienttoscreen(Point(Width div 2, Height div 2));
end;
end;
procedure TForm1.GLSceneViewer1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Screen.Cursor:=crDefault;
end;
Das TGLScene wird im OnProgress eines cadencers gerendert.
Das Problem bei der Sache: Solange ich die Maustaste gedrückt halte und ziehe, wird die Szene nicht neu gerendert, erst wenn ich die Maustaste wieder loslasse.
Was kann ich dagegen tun?