Delphi-PRAXiS
Seite 3 von 10     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Vektor Format anzeigen/drucken (https://www.delphipraxis.net/102812-vektor-format-anzeigen-drucken.html)

Gruber_Hans_12345 6. Nov 2007 10:07

Re: Vektor Format anzeigen/drucken
 
@xaromz: siehst noch eine chance, die SVG Import Library so zu ändern, das die Schriften richtig gedruckt werden wie von den anderen Programmen (Coreldraw, Inkscape, IE, firefox, AI)?

Das Problem ist, das ich habe immer einiges an text, und die müssen doch einigermassen exakt positioniert und gedruckt werden (das selbe problem habe ich mit EMF/WMF auch, das die positinierung nicht passt - da war aber der export von corel schuld)

xaromz 6. Nov 2007 10:45

Re: Vektor Format anzeigen/drucken
 
Hallo,

momentan habe ich keine rechte Idee, was das Problem ist. Ich schau mir das aber noch mal genauer an.

Gruß
xaromz

Gruber_Hans_12345 6. Nov 2007 10:53

Re: Vektor Format anzeigen/drucken
 
Zitat:

Zitat von xaromz
Hallo,

momentan habe ich keine rechte Idee, was das Problem ist. Ich schau mir das aber noch mal genauer an.

Gruß
xaromz

wäre toll, wenn du was finden würdest ...
(hattest du schon mal ein svg, wo die texte richtig gerendert wurden - also, wo das ende eines textes auch positionsgetreu sein mußte?)

wenn du irgendeine hilfe brauchst - einfach melden

das ist jetzt der part aus dem svg mit dem einfachen text
Code:
<text x="5.8918" y="12.3474" fill="#131516" font-weight="normal" font-size="2.4694" font-family="Arial">Strasse, Ort und eventuell Land, </text>

Gruber_Hans_12345 9. Nov 2007 08:54

Re: Vektor Format anzeigen/drucken
 
hallo xaromz

hattest du schon mal zeit zu schauen, ob dieser fehler behebbar ist?
wenn nicht, werde ich mich wohl oder übel nach einem anderen format oder eine andere komponente umsehen müssen :(

(nur sind die meisten SVG Komponenten nicht alleine erhältlich sondern immer in verbindung mit anderen CAD Komponenten und kosten dann gleich mal an die 1000 euro, und das ist eindeutig viel zu viel)

ich brauche das ganze "nur", um eine druckvorlage zu machen, also, wenn ein Report gedruckt werden soll, dann soll zuvor auf jede A4 seite dieses SVG gedruckt werden, wo statische Informationen zum betrieb sind, daher ist mir das format eigetnlich egal, es sollte nur eines sein, was Linien und co kann, Schriften und Grafiken (PNG, JPG), aber das ganze sollte gleich aussehen wie in einem standardprogramm zb CorelDraw oder Illustrator, damit man sagen kann, CorelDraw aufmachen -> das ganze als SVG mit folgenden einstellungen speichern und dann siehts im program gleich aus! (und bei EMF und WMF geht das zb nicht)

xaromz 9. Nov 2007 09:37

Re: Vektor Format anzeigen/drucken
 
Hallo,

ich habe mir das angesehen und konnte in meinem Quellcode keinen Fehler feststellen. Ich weiß also leider nicht, warum das anders aussieht als in anderen Programmen. Wenn ich was neues weiß, werde ich mich melden.

Gruß
xaromz

Gruber_Hans_12345 9. Nov 2007 10:52

Re: Vektor Format anzeigen/drucken
 
hab mir noch mal ein paar sachen angeschaut ...


die Höhe der Schrift passt 100%
die y-Position der Schrift passt auch 100%

aber schon die x-StartPosition also der linke wert der schrift passt absolut nicht (da ist ein versatz von 3mm drinnen)
und dann noch die breite die statt 108.5mm 112mm hat

(das mit einer Schrift mit Schriftgröße Arial 48)

aber der linke versatz müsste doch etwas leichter zu finden sein oder?

gibt es irgendwo eine dokumentation zu GDI+?

hab mir mal den source etwas angeschaut, und die texte werden da ja mit TGPGraphicsPath.AddString ausgegeben, gibt es eine möglichkeit in GDI+ einen Text "ganz normal" auszugeben, also ohne Path einfach einen text an Position (x, y) auszugeben (vielleicht macht dieses Path da ein paar komische sachen mit dem text)


edit:
hab mir mal angeschaut, was da alles berechnet wird
also ein Textfeld exportiert, und einen rahmen drumherumgemacht
der rahmen hat genau die abmessungen von width="111.455" height="12.1121"
das Textfeld bekommt bei SetSize die Werte (120,9 * 21,03) und FontHeight berechnet er auf 15,329

warum rechnet das MeasureText so einen großen Rahmen drum herum? -> deshalb sind die Startpsitionen schon mal falsch
gibt es da noch wo einstellungen dafür?

Gruber_Hans_12345 9. Nov 2007 12:02

Re: Vektor Format anzeigen/drucken
 
@xaromz

ist es möglich den Text, der geladen wird zu stauchen?
ich möchte probieren, ob es möglich ist, wenn ich den text immer mit einem faktor stauche (entweder fix oder fontheight oder fontsize abhängig) ob dann das richtige ergebnis rauskommt - wäre ein versuch?

ich vermute mal ich muß da irgendwas mit der matrix machen oder?

kannst mir vielleicht kurz den weg weisen ;)


edit: also den offset von x bekomme ich so schon mal fast aufs pixel genau hin
Delphi-Quellcode:
  FPath.AddString(FText, Length(FText), FF, FontStyle, GetFontSize, MakePoint(X - 18.5*(fFontHeight / 100), Y - FFontHeight), SF);

Gruber_Hans_12345 9. Nov 2007 15:49

Re: Vektor Format anzeigen/drucken
 
tja, ich habe zwar absolut keine ahnung warum ich diese faktoren brauche (habe die jetzt mal mit testen rausbekommen) aber das ergebnis sieht schon mal zu 99% gut aus (ganz kleine abweichungen sind noch drinnen) - werde es noch mal mit mehr texte probieren

Delphi-Quellcode:
  scale := 0.971;

  M := TGPMatrix.Create;
  M.Reset;
  M.Translate(-0.184*fFontHeight, 0, MatrixOrderAppend);
  M.Scale(scale, 1, MatrixOrderAppend);
  M.Translate((1-scale)*(X), 0, MatrixOrderAppend);
  fPath.transform(M);
  M.Free;
ich weiss, ich könnte die zwei translate zusammenfassen, aber so ist es wenigstens etwas übersichtlich ...

Gruber_Hans_12345 9. Nov 2007 16:33

Re: Vektor Format anzeigen/drucken
 
Liste der Anhänge anzeigen (Anzahl: 2)
so .... ein großes problem habe ich mit dem text selber noch

und zwar wird bei dem Wort "Test" das e unterschiedlich weit zum T gezeichnet (bei Corel wird das e etwas ins T geschoben) bei GDI+ wird das e vom T weiter weggeschoben, das erklärt jetzt noch die Probleme mit verschiedenen Texten

Ist das irgendeine Einstellung? also das die buchstaben nicht vom äussersten punkt berechnet werden sollen?

hab die zwei screenshoots angehängt, damits klarer ist was ich meine ...

xaromz 9. Nov 2007 16:48

Re: Vektor Format anzeigen/drucken
 
Hallo,

ein interessantes Selbstgespräch führst Du hier :wink: .
Ich antworte mal auf ein paar Dinge:

Zitat:

Zitat von Gruber_Hans_12345
die Höhe der Schrift passt 100%
die y-Position der Schrift passt auch 100%

aber schon die x-StartPosition also der linke wert der schrift passt absolut nicht (da ist ein versatz von 3mm drinnen)
und dann noch die breite die statt 108.5mm 112mm hat

Seltsam. Sehr seltsam.

Zitat:

Zitat von Gruber_Hans_12345
gibt es irgendwo eine dokumentation zu GDI+?

[msdn]GDI+[/msdn]

Zitat:

Zitat von Gruber_Hans_12345
hab mir mal den source etwas angeschaut, und die texte werden da ja mit TGPGraphicsPath.AddString ausgegeben, gibt es eine möglichkeit in GDI+ einen Text "ganz normal" auszugeben, also ohne Path einfach einen text an Position (x, y) auszugeben (vielleicht macht dieses Path da ein paar komische sachen mit dem text)

Klar kann man den Text auch einfach so ausgeben (TGPGraphics.DrawText), aber das Ergebnis ist das selbe. Den Pfad brauche ich aber, um Fläche und Umrandung einzeln zeichnen zu können.

Zitat:

Zitat von Gruber_Hans_12345
warum rechnet das MeasureText so einen großen Rahmen drum herum? -> deshalb sind die Startpsitionen schon mal falsch
gibt es da noch wo einstellungen dafür?

Keine Ahnung, warum der Rahmen so groß ist, einstellen kann man da IMHO nichts.

Zitat:

Zitat von Gruber_Hans_12345
ich vermute mal ich muß da irgendwas mit der matrix machen oder?

Das hast Du ja inzwischen selbst rausgefunden.

Zitat:

Zitat von Gruber_Hans_12345
und zwar wird bei dem Wort "Test" das e unterschiedlich weit zum T gezeichnet (bei Corel wird das e etwas ins T geschoben) bei GDI+ wird das e vom T weiter weggeschoben, das erklärt jetzt noch die Probleme mit verschiedenen Texten

Ist das irgendeine Einstellung? also das die buchstaben nicht vom äussersten punkt berechnet werden sollen?

Das ist offensichtlich ein Kerning-Problem. Ich glaube aber, auch das kann man nicht einstellen.

Ich schau mal, ob ich am Wochenende etwas Zeit habe, da noch gründlicher zu forschen.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.
Seite 3 von 10     123 45     Letzte »    

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