AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie sende ich TImage-Mauskoordinaten korrekt an Canvas moveTo () / lineTo ()
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von flashcoder · begonnen am 25. Dez 2019 · letzter Beitrag vom 26. Dez 2019
Antwort Antwort
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#1

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

  Alt 25. Dez 2019, 21:44
Delphi-Version: 10 Seattle
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);
  Mit Zitat antworten Zitat
Alt 25. Dez 2019, 23:29     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#2

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

  Alt 26. Dez 2019, 01:56
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.

Geändert von flashcoder (26. Dez 2019 um 02:11 Uhr)
  Mit Zitat antworten Zitat
Alt 26. Dez 2019, 04:08     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#3

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

  Alt 26. Dez 2019, 12:22
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).
  Mit Zitat antworten Zitat
Alt 26. Dez 2019, 14:12     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#4

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

  Alt 26. Dez 2019, 14:29
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.
  Mit Zitat antworten Zitat
Alt 26. Dez 2019, 15:38     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
flashcoder

Registriert seit: 10. Nov 2013
83 Beiträge
 
#5

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

  Alt 26. Dez 2019, 17:15
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

Geändert von flashcoder (26. Dez 2019 um 17:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 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