AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE8 Maps Marker Generieren

Ein Thema von hewy · begonnen am 18. Mai 2023 · letzter Beitrag vom 24. Mai 2023
Antwort Antwort
Seite 1 von 2  1 2      
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
81 Beiträge
 
Delphi XE5 Enterprise
 
#1

Delphi XE8 Maps Marker Generieren

  Alt 18. Mai 2023, 21:55
Arbeite seit einiger Zeit an einer Logistik Applikation. Mit Delphi XE8 und TMS Maps.
Funktionier eigentlich wunderbar, habe aber ein Hindernis mit im Programm generierten Marker

Die Marker generiere ich mit dem hier beschriebenem Beispiel:
https://stackoverflow.com/questions/...nvas-on-delphi

Die Schwierigkeit mit der ich Kämpfe ist die Marker werden wie gewünscht erstellt nur dass ich jeweils ein Weisses Rechteck um die Marker habe. Siehe Bild im Anhang.
Vielleicht kann mir jemand eine Typ geben wich diese weisse Fläche transparent machen könnte.
Vielen Dank schon mal im Voraus
HeWy
Miniaturansicht angehängter Grafiken
markersample.png  
Angehängte Dateien
Dateityp: txt MarkerGenerator.txt (1,2 KB, 15x aufgerufen)
Heinrich Wyssen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi XE8 Maps Marker Generieren

  Alt 19. Mai 2023, 07:43
Ich arbeite nicht mit TMS Maps, dort sollte es aber ein AfterDraw geben, benutzt Du dies zum zeichnen ?

Delphi-Quellcode:
procedure TForm1.WebOSMaps1AfterDraw(Sender: TObject; ACanvas: TCanvas);
var
  MarkerPoint: TPoint;
begin
  // Perform custom drawing here
  MarkerPoint := WebOSMaps1.LatLngToScreen(PointLatLng(37.7749, -122.4194)); // Adjust the coordinates as needed

  // Draw a custom marker shape
  ACanvas.Brush.Color := clRed;
  ACanvas.Pen.Color := clBlack;
  ACanvas.Pen.Width := 2;
  ACanvas.Ellipse(MarkerPoint.X - 10, MarkerPoint.Y - 10, MarkerPoint.X + 10, MarkerPoint.Y + 10);

  // Draw custom text
  ACanvas.Font.Size := 12;
  ACanvas.Font.Style := [fsBold];
  ACanvas.Font.Color := clWhite;
  ACanvas.TextOut(MarkerPoint.X - 5, MarkerPoint.Y - 5, 'Custom Marker');
end;
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
81 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: Delphi XE8 Maps Marker Generieren

  Alt 19. Mai 2023, 12:55
Danke Rollo64 für deine Hinweis, Bei TMS gibt es zwar ein on AfterDraw allerdings wird dies nur einmal aufgerufen beim Erstellen der Karte. Also ist es nicht das muss mal schauen ob es sowas für das Zeichnen der Marker gibt. Da der weisse Hintergrund bei meinem Marker die einzige Unschönheit ist mit der ich aktuell herum übe will ich doch versuchen dies transparent zu machen.
Vieleicht findet sich doch noch eine Lösung für die Transparenz.
Heinrich Wyssen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi XE8 Maps Marker Generieren

  Alt 19. Mai 2023, 16:47
Nur mal geraten: Wenn dem so ist, vielleicht hilft dann ein Refresh oder Repaint oder ähnlich um das Neuzeichnen zu Triggern, falls es das bei den TMS Maps gibt.
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
81 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: Delphi XE8 Maps Marker Generieren

  Alt 20. Mai 2023, 08:54
Nun ja geht mit onDraw nicht, die Transparency muss wirklich der Marker Graphik mitgegeben werden, da der Marker als eigene Graphik in einem Owerlay angezeigt wird und daher nicht direkter Bestandteil der Karten Graphik ist.
Aus dem gezeichneten Marker mache ich einen Base64 String kenne mich da nicht wirklich aus aber mal sehen vielleicht kann ich in diesem String vor der Übergabe zum Darstellen die Transparenten Flächen (Farbe) noch konvertieren.
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi XE8 Maps Marker Generieren

  Alt 20. Mai 2023, 14:01
Nja, irgendwas muß dabei als "transparent" erkannt werden.
* das könnte eine bestimmte Farbe sein,
* aber auch die Farbe eines bestimmten Pixels (die erste Ecke)
* oder z.B. ein AlphaKanals in der Farbe (32 Bit-Farbe)

Was nun aber für dieses Overlay verwendet wird, das sollte doch bestimmt in der Doku stehen?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
81 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: Delphi XE8 Maps Marker Generieren

  Alt 21. Mai 2023, 13:13
Danke für deinen Hint Himitsu,
ich übergebe einen Base64 String was auch einwandfrei funktioniert. TMS Maps Zeichnet einfach das was übergeben wird.
Übergebe ich base64 Strings, die ich mit einem separaten Graphik Programm erstellte und darin den gewünschten Bereich Transparent mache dann ist die Darstellung so wie gewünscht.
Generiere ich die Marker mit der beigefügten Funktion (Siehe Anlage) fehlt der Transparente Teil und dieser wird dann leider weiss oder was auch immer ich definiere dargestellt.
Also meine Frage wie bekomme ich meine Funktion ‘GenerateMarker’ Marker so hin dass die Blauen Marker den Weissen Bereich transparent macht?
Siehe Anhang: Blaue Ist Gelbe Soll
Miniaturansicht angehängter Grafiken
soll_ist.jpg  
Heinrich Wyssen

Geändert von hewy (21. Mai 2023 um 13:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi XE8 Maps Marker Generieren

  Alt 21. Mai 2023, 14:16
Das Bast64 ist vollkommen irrelevant, gegenüber einer binären Übergabe.
Die Übergabe per se funktioniert ja schließlich.

Es kommt also auf das drauf an, was als Daten übergeben wird.
ImageTyp und das Format.


Du wirst ja wohl nicht auf eine PaintBox malen.

Was für ein Typ hat das Bild und in welchem Format wird das Bild gespeichert.
TPngImage, TBitmap, TJPEGImage, ...
und beim Bitmap z.B. die Farbtiefe/Bits (16, 24, 32 und wie sie interpretiert werden, ala AlphaKanal) oder ob es zusätzlich eine BitMaks gibt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
946 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Delphi XE8 Maps Marker Generieren

  Alt 21. Mai 2023, 14:51
Brush.Style := bsClear;
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
81 Beiträge
 
Delphi XE5 Enterprise
 
#10

AW: Delphi XE8 Maps Marker Generieren

  Alt 21. Mai 2023, 15:13
Ok habe das Ganze meiner Meinung nach auf das notwendige Minimum reduziert.
Bekomme aber immer noch die vollen Hintergrund Flächen möchte alles was clFuchsia ist transparent haben.

Delphi-Quellcode:
    Function tMarkerUtils.GenerateTriMarker(aColor: tColor): string;

    var MarkerImage: TImage;
        TransparentColor: TColor;
        Points: array of TPoint;

    begin
      MarkerImage:= TImage.Create(nil);
      try
        MarkerImage.Width:= 55;
        MarkerImage.Height:= 30;
        MarkerImage.Picture:=nil;

        TransparentColor := clFuchsia; // Background color

        MarkerImage.Canvas.Brush.Style := bsClear;
        MarkerImage.Canvas.Brush.Color:= TransparentColor;
        MarkerImage.Picture.Bitmap.TransparentColor := TransparentColor;
        MarkerImage.Picture.Bitmap.Transparent:= true;
        MarkerImage.Canvas.FillRect(Rect(0, 0, MarkerImage.Width, MarkerImage.Height));

        SetLength(Points, 3);
        Points[0] := Point(5, 5);
        Points[1] := Point(35, 5);
        Points[2] := Point(20, 20);
        MarkerImage.Canvas.Pen.Width := 2;
        MarkerImage.Canvas.Pen.Color := clBlack;
        MarkerImage.Canvas.Brush.Color := aColor;
        MarkerImage.Canvas.Polygon(Points);

        Result:= GetBase64Image(MarkerImage);
      finally
        MarkerImage.Free;
      end;
    end;
Miniaturansicht angehängter Grafiken
triangles.png  
Heinrich Wyssen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 21:30 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