Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo () (https://www.delphipraxis.net/202928-wie-sende-ich-timage-mauskoordinaten-korrekt-canvas-moveto-lineto.html)

flashcoder 25. Dez 2019 21:44

Delphi-Version: 10 Seattle

Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
 
Ich habe einen Android-Code gefunden, mit dem Ihr Ziel einen L-förmigen Ziehweg simuliert: 200 Pixel rechts, dann 200 Pixel unten. Diese Werte wurden im Code vordefiniert. Wie kann dies mit den Mauskoordinaten einer TImage-Komponente und Ihren Ereignissen ("Maus runter", "Maus hoch" usw.) erreicht werden?

Ich brauche dies, um in meinem Beispiel für Remote-Zugriff (Delphi-Controller > Android-Client) zu implementieren.

Hier ist der Android-Code >

Delphi-Quellcode:
// Simulates an L-shaped drag path: 200 pixels right, then 200 pixels down.
Path path = new Path();
path.moveTo(200,200);
path.lineTo(400,200);

final GestureDescription.StrokeDescription sd = new GestureDescription.StrokeDescription(path, 0, 500, true);

// The starting point of the second path must match
// the ending point of the first path.
Path path2 = new Path();
path2.moveTo(400,200);
path2.lineTo(400,400);

final GestureDescription.StrokeDescription sd2 = sd.continueStroke(path2, 0, 500, false); // 0.5 second

HongBaoService.mService.dispatchGesture(new GestureDescription.Builder().addStroke(sd).build(), new AccessibilityService.GestureResultCallback(){

@Override
public void onCompleted(GestureDescription gestureDescription){
super.onCompleted(gestureDescription);
HongBaoService.mService.dispatchGesture(new GestureDescription.Builder().addStroke(sd2).build(),null,null);
}

@Override
public void onCancelled(GestureDescription gestureDescription){
super.onCancelled(gestureDescription);
}
},null);

flashcoder 26. Dez 2019 01:56

AW: Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
 
Zitat:

Zitat von Frühlingsrolle (Beitrag 1453935)
Im Prinzip, so:
Delphi-Quellcode:
private
  FMouseDown: Boolean;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FMouseDown := Button = mbLeft;
end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if FMouseDown then
    PaintBox1.Canvas.LineTo(X, Y) else
    PaintBox1.Canvas.MoveTo(X, Y);
end;

procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  FMouseDown := false;
end;

Dies funktioniert nicht, die Mausbewegung muss dem Android-Code in Path.moveTo () und Path.lineTo () entsprechen.

flashcoder 26. Dez 2019 12:22

AW: Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
 
Zitat:

Zitat von Frühlingsrolle (Beitrag 1453937)
Was hindert dich daran, anstelle der PaintBox.Canvas, Path zu benutzen?

Delphi-Quellcode:
uses FMX.Objects; // Include TPath

private
  FPath: TPath;
  FMouseDown: Boolean;

// constructor
FPath := TPath.Create(self);

// MouseDown event
FMouseDown := true;

// MouseMove event
PaintBox1.Canvas.BeginScene;
if FMouseDown then
  FPath.Data.LineTo(PointF(X, Y)) else
  FPath.Data.MoveTo(PointF(X, Y));
PaintBox1.Canvas.DrawPath(FPath.Data, 1);
PaintBox1.Canvas.EndScene;

// MouseUp event
FMouseDown := false;

Ich suche keine Code-Übersetzung. Ich muss die Mausbewegung auf dem Bildsteuerelement mit dem obigen Android-Code synchronisieren. Das Endergebnis ist ein Ziehpfad in eine beliebige Richtung (auf dem Android-Smartphone).

flashcoder 26. Dez 2019 14:29

AW: Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
 
Zitat:

Zitat von Frühlingsrolle (Beitrag 1453948)
Und genau das passiert hier!
Wenn du dir etwas Anderes darunter vorstellst, dann musst du es entsprechend beschreiben.

Wenn Sie diesen Weg zu Android-Code (Java oben gepostet) senden, wird nicht funktionieren. Sehen Sie sich noch einmal Java-Code und Sie werden verstehen.:)

flashcoder 26. Dez 2019 17:15

AW: Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
 
Zitat:

Zitat von Frühlingsrolle (Beitrag 1453951)
Klären wir erst einmal die Voraussetzungen ab.
Mit welcher IDE wird entwickelt? Delphi 10?
Was genau funktioniert an dem Code nicht?

Delphi 10 = VCL Windows-Anwendung (App-Controller)
Android Studio = App gesteuert.

Das Ziel ist es, die Mausbewegung (in diesem Fall ziehen) vom App-Controller (Windows-App) zur App-gesteuerten (Android-App) zu reproduzieren. Der obige Java-Code zeigt, wie dies mit der Methode StrokeDescription.continueStroke().

Mehr sehen:

Dann, wie man dies mit Mauskoordinaten des TImage-Steuerelements (auf der Windows-App) macht, um mit dem oben angegebenen Java-Code zu arbeiten?

Zum besseren Verständnis siehe das unten stehende GIF. Dies ist umso näher an meinem Ziel, es hier zu zeigen.

Team Viewer QuickSupport =>

https://i.stack.imgur.com/i5oDk.gif

Dies wurde bereits an anderer Stelle gefragt:

aber niemand kennt die Lösung :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 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