AGB  ·  Datenschutz  ·  Impressum  







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

Beispiele für TPathData

Ein Thema von philipp.hofmann · begonnen am 20. Jul 2022 · letzter Beitrag vom 21. Jul 2022
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#1

AW: Beispiele für TPathData

  Alt 20. Jul 2022, 11:47
Ich glaube ganz ohne Fummelei wird es schwierig.
Ich suche mir was als SVG in den üblichen Verdächtigen Icon-Bibliotheken aus: MaterialIO, Bootstrap, usw. und versuche dann
mit Adobe Illustrator, Gimp oder InkScape das zu konvertieren.

Einfache B/W Icons sind dafür natürlich am Besten geeignet, komplexe mit Gradienten wird wohl eher schwieriger.

Eine Library speziell mit Pathdata ist mir so nicht bekannt, wäre schön eine zu haben, sag Bescheid wenn Du was findest
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Beispiele für TPathData

  Alt 20. Jul 2022, 17:20
Ja, danke. Der SVG-Path lässt sich ja manchmal, aber auch nicht immer, direkt in der Delphi-IDE importieren.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#3

AW: Beispiele für TPathData

  Alt 20. Jul 2022, 19:15
Ja, danke. Der SVG-Path lässt sich ja manchmal, aber auch nicht immer, direkt in der Delphi-IDE importieren.
Es lässt sich eigentlich gut kombinieren mit simplen Primitiven.
Ich habe mir zum Beispiel meine eigenen "Icons" zusammengesbastelt, welche auf den gleichen Dimensionen basieren müssen (hier 24x24).
So kann ich z.B. einfach die Strings aneinanderhängen durch simple Addition.

Delphi-Quellcode:
const
    // Rahmen 24x24

    ...
     
    CPathIni_24x24_Framed_C = 'M0 0 M24 24 M12 12z';

const
    // PathRel segments

    ....

    CPathRel_24x24_Arrow_Left = 'm-12 -12 m14 7l-5 5 5 5V7z';
    CPathRel_24x24_Arrow_Right = 'm-12 -12 m10 17l5-5-5-5v10z';

    ...

const
    // Kombination aus einem absolutem Rahmen und einem relativen Pfad

    CPath_Prev = CPathIni_24x24_Framed_C + CPathRel_24x24_Arrow_Left;

    CPath_Next = CPathIni_24x24_Framed_C + CPathRel_24x24_Arrow_Right;
Man muss nur darauf achten das ein additierbarer Pfad am Ende wieder auf einen definierten Punkt läuft, z.B. 0,0
Ich bin aber weit davon entfernt eine Riesenlibrary zu haben, ich packe mir immer nur was dazu wenn ich es brauche und nicht zu komplex ist.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.753 Beiträge
 
Delphi 12 Athens
 
#4

AW: Beispiele für TPathData

  Alt 20. Jul 2022, 21:23
Man kann sowas auch relativ komfortabel programmieren:
Delphi-Quellcode:
function MakePathData: string;
var
  pd: TPathData;
begin
  pd := TPathData.Create;
  try
    pd.AddRectangle(TRectF.Create(0, 0, 24, 24), 0, 0, AllCorners, TCornerType.InnerLine);
    pd.MoveTo(TPointF.Create(14, 7));
    pd.LineTo(TPointF.Create( 9, 12));
    pd.LineTo(TPointF.Create(14, 17));
    pd.VLineTo(7);
    pd.ClosePath;
    Result := pd.Data;
  finally
    pd.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.239 Beiträge
 
Delphi 12 Athens
 
#5

AW: Beispiele für TPathData

  Alt 21. Jul 2022, 11:24
Man kann sowas auch relativ komfortabel programmieren:
Delphi-Quellcode:
function MakePathData: string;
var
  pd: TPathData;
begin
  pd := TPathData.Create;
  try
    pd.AddRectangle(TRectF.Create(0, 0, 24, 24), 0, 0, AllCorners, TCornerType.InnerLine);
    pd.MoveTo(TPointF.Create(14, 7));
    pd.LineTo(TPointF.Create( 9, 12));
    pd.LineTo(TPointF.Create(14, 17));
    pd.VLineTo(7);
    pd.ClosePath;
    Result := pd.Data;
  finally
    pd.Free;
  end;
end;
Das stimmt, ich finde es aber bei komplexeren Shapes in der Regel viel effektiver das zu "zeichnen" z.B. in InkScape,
und dann als PathData-Text zu konvertieren.
Der Vorteil ist auch das man es dann in Inkskep direkt "sieht".

Zum Beispiel auch hiermit einfach in einem Online-Editor

Das ...
Zitat:
M19.5,12.2l-7.7,7.7V26c0,0.7,0.6,1.2,1.2,1.2h4.6v-5.2c0-0.3,0.3-0.6,0.6-0.6h2.5c0.3,0,0.6,0.3,0.6,0.6v5.2h4.6c0.7,0,1.2-0.6,1.2-1.2v-6.1L19.5,12.2L19.5,12.2z M20.2,9.1L29,18c0.2,0.2,0.3,0.4,0.3,0.7c0,0.5-0.4,0.9-0.9,0.9c-0.3,0-0.5-0.1-0.7-0.3l-8.2-8.2l-8.2,8.2c-0.2,0.2-0.4,0.3-0.7,0.3c-0.5,0-0.9-0.4-0.9-0.9c0-0.3,0.1-0.5,0.3-0.7l8.9-8.9C19,9,19.2,8.9,19.5,8.9C19.8,8.9,20,9,20.2,9.1z M19.5,39C8.7,39,0,30.3,0,19.5S8.7,0,19.5,0S39,8.7, 39,19.5S30.3,39,19.5,39z M19.5,0.4C9,0.4,0.4,9,0.4,19.5S9,38.6,19.5,38.6S38 .6,30,38.6,19.5S30,0.4,19.5,0.4z
Clipboard24.png

... will man nicht wirklich programmieren, sondern "malen"
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.129 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Beispiele für TPathData

  Alt 20. Jul 2022, 22:49
Ja, danke. Der SVG-Path lässt sich ja manchmal, aber auch nicht immer, direkt in der Delphi-IDE importieren.
Müsste man halt gucken, woran das scheitert. Es gibt SVG-Befehle bzw. -Syntax, daran scheitern auch große wie Affinity. Man kann z.B. hinter den beiden Flags vom Arc-Befehl das Leerzeichen weglassen. Außerdem kann man sich das Leerzeichen zwischen zwei Zahlen schenken, wenn a) die zweite Zahl negativ ist, oder wenn b) die zweite Zahl kleiner als 1 ist und gleichzeitig die erste eine Kommazahl oder in wissenschaftlicher Notation. Ist aber alles der Kompatibilität nicht zuträglich.

Was nun bei Rollo der Sinn von zweimal Move hintereinander ist oder warum in seinen „relativen Pfaden“ absolute Befehle vorkommen, weiß ich aber auch nicht.
Janni
2005 PE, 2009 PA, XE2 PA
  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 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz