AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Vektor Format anzeigen/drucken

Vektor Format anzeigen/drucken

Ein Thema von Gruber_Hans_12345 · begonnen am 5. Nov 2007 · letzter Beitrag vom 24. Nov 2007
Antwort Antwort
Seite 8 von 10   « Erste     678 910   
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#71

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 09:11
Zitat von Gruber_Hans_12345:
wenn du mir sagst, welche dcu du benötigst, kann ich dir die schon irgendwie zukommen lassen ...
aber bei mir hat es mit D6 eigentlich fast keine probs beim installieren gegeben, den einen fehler in den widestrings raus, die requiered units ausmisten und dann lief das ganze schon fast ohne probs ...
Guten Morgen,

ich habe nun folgendes getan. Ich lade mir die SVGImagePackageD und lösche dort direkt im Code vclactnband aus den reqiures. Dann will ich compilieren. Das scheitert dann aufgrund eines Fehlers. Der Compiler meckert, dass er GetFileVersion aus der Unit SVGImageList nicht kennt. Ich nehme mal an, dass das mit der neueren SysUtils zusammen hängt!?

Also ändere ich folgenden Code ab, da ich die IconListe nicht brauche sondern eigentlich nur das SVGImage brauche.
Aus
Code:
  if GetFileVersion(comctl32) >= ComCtlVersionIE6 then
    Result := SVGToIcon32(SVG)
  else
    Result := SVGToIcon24(SVG);
Wir dann
Code:
  //if GetFileVersion(comctl32) >= ComCtlVersionIE6 then
  //  Result := SVGToIcon32(SVG)
  //else
    Result := SVGToIcon24(SVG);
Nun schreibt mir der Compiler, dass er die Themes.dcu nicht finden kann. Diese gehört wohl auch nicht standardmäßig zu D6. Also wie gehts nun weiter?

Nachtrag
Es läuft nun!!! Danke!!!
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#72

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 10:17
Ich habe noch was gefunden: Gradients werden leider noch nicht unterstützt...

getestet mit dieser Datei:

http://www.w3.org/TR/SVG/images/pservers/lingrad01.svg
Danke
Tom
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#73

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 11:08
habe noch ein gröberes problem ....

und zwar mit folgendem svg

Code:
<?xml version="1.0" encoding="UTF-16"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="210mm" height="297mm" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"
viewBox="0 0 210 297">
 <g id="Ebene_x0020_1">
  <metadata id="CorelCorpID_0Corel-Layer"/>
  <line fill="none" stroke="#AAA9A9" stroke-width="0.7056" x1="4" y1="29.04" x2="204" y2= "29.04" />
  <path fill="#131516" d="M65.4536 22.9805l0 3.6945 0.4196 0 0 -0.3359c0.1802,0.2647 0.4285,0.3971 0.7449,0.3971 0.3181,0 0.5908,-0.1249 0.8178,-0.3756 0.2273,-0.2502 0.341,-0.6049 0.341,-1.0633 0,-0.1934 -0.0269,-0.3748 -0.0809,-0.5441 -0.0537,-0.1701 -0.1284,-0.3148 -0.2235,-0.4347 -0.095,-0.1199 -0.2164,-0.2133 -0.3635,-0.2798 -0.1471,-0.0662 -0.3032,-0.0996 -0.4682,-0.0996 -0.2978,0 -0.5426,0.1206 -0.7345,0.3616l0 -1.3194 -0.4527 -0.0003 0 -0.0005zm0.631 1.59c0.1447,-0.172 0.3164,-0.2581 0.5153,-0.2581 0.197,0 0.3651,0.083 0.5037,0.2495 0.1386,0.1663 0.2083,0.4238 0.2083,0.7731 0,0.3405 -0.0724,0.5971 -0.2171,0.7691 -0.1448,0.1719 -0.3165,0.258 -0.5149,0.258 -0.2441,0 -0.438,-0.1168 -0.5808,-0.35 -0.0875,-0.1424 -0.1312,-0.3741 -0.1312,-0.6948 -0.0006,-0.326 0.0718,-0.5747 0.2167,-0.7468z"/>
  <line fill="none" stroke="#AAA9A9" stroke-width="0.7056" x1="4" y1="277" x2="204" y2= "277" />
 </g>
</svg>
die zweite linie wird nicht mehr richtig gedruckt (bzw alle linien, die nach dem path kommen, werden falsch gezeichnet)

aber nur, wenn ich das ganze in ein MetaFile zeichne, dem ich als Referenz einen HDC zu einem Drucker gebe ...

Delphi-Quellcode:
        FReferenceDC := CreateDC(ADriver, ADevice, nil, nil)
FCanvas := TMetafileCanvas.Create(FMetafile, FReferenceDC);

    SetMapMode(DC, MM_ANISOTROPIC);
    SetWindowExtEx(DC, Fpage_xres, Fpage_yres, nil);
    SetViewPortExtEx(DC, currX, currY, nil);
    SetViewPortOrgEx(DC, 0, 0, nil);
    SetWindowOrgEx(DC, 0, 0, nil);

hast du eine idee, woran das liegen kann?


edit:
also, es liegt irgendwie am pfad
folgender pfad funktioniert
Code:
<path fill="none" d="M80.2099 6.9461c-0.209,0 -0.3845,0.0697 -0.5269,0.2086 -0.1424,0.139 -0.2211,0.3249 -0.2363,0.5576l1.4992 0.0002c-0.0203,-0.2246 -0.0775,-0.3928 -0.172,-0.5049 -0.1453,-0.1743 -0.3332,-0.2615 -0.564,-0.2615z"/>
nach folgendem path sind alle linien falsch (sowohl direkt gezeichnete als auch die, die in Path umgewandelt wurden ...)
Code:
<path fill="#009FC6" d="M6.491 26.575c0.5687,0 1.0486,-0.4375 1.0486,-1.0127l0 -19.2078c0,-0.5546 -0.499,-0.9334 -1.0463,-0.9345 -0.5484,-0.0012 -1.0509,0.3479 -1.0509,0.9348l0 19.2451c0.0002,0.5699 0.4706,0.9751 1.0486,0.9751z"/>
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#74

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 11:34
hmmm, ich sehe gerade, das sobald ich einen path verwenden (Egal welchen - aber sobald der gezeichnet wird (der erste pfad oben hat fill="none" und wird deshalb nicht gezeichnet), dann passt das zeichnen von linien gar nicht mehr

ich zeichne zuerst das svg in ein TGPGraphic, dann mache ich ein
ResetTransform, ResetClip und ein erneutes ScaleTransform, aber die Linie (Die ich manuell zeichne ist nicht mehr dort, wo sie hingehört) das zeichnen des pfades hat irgendetwas verstellt, das ich mit diesen befehlen oben nicht mehr korrigieren kann ...


[edit]also, sobald ich wieder einen text ausgebe (aber nur mit DrawString, dann funktioniert das ganze wieder) also irgendwie kommt mir das ganze sehr komisch vor
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#75

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 13:57
Ich habe mal noch eine kleine Frage. Das Drehen des SVG´s kann ich ja über
SVGImage1.SVG.Angle:=1 erledigen. Hat es einen Grund, warum der Angle nicht einfach von 1-360° geht? Und von wo nach wo geht denn der Angel im Falle des SVG´s? Ich nehme mal an von 0 - ?
Danke
Tom
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#76

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 14:00
Zitat von torud:
Ich habe mal noch eine kleine Frage. Das Drehen des SVG´s kann ich ja über
SVGImage1.SVG.Angle:=1 erledigen. Hat es einen Grund, warum der Angle nicht einfach von 1-360° geht? Und von wo nach wo geht denn der Angel im Falle des SVG´s? Ich nehme mal an von 0 - ?
hast mal probiert ob der angel in rad angegeben werden muß? (also 0-2PI) (ohne testen, aber wäre logisch ...)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#77

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 16:56
Hallo,

Zitat von torud:
Ich habe noch was gefunden: Gradients werden leider noch nicht unterstützt...
Eigentlich schon... ich werde die Tage mal schauen, was da schiefläuft.

Zitat von Gruber_Hans_12345:
hast mal probiert ob der angel in rad angegeben werden muß? (also 0-2PI) (ohne testen, aber wäre logisch ...)
Genau.

Zitat von Gruber_Hans_12345:
hmmm, ich sehe gerade, das sobald ich einen path verwenden (Egal welchen - aber sobald der gezeichnet wird (der erste pfad oben hat fill="none" und wird deshalb nicht gezeichnet), dann passt das zeichnen von linien gar nicht mehr
Muss ich mir ansehen. Das Problem kenne ich so nicht.

Zitat von Gruber_Hans_12345:
nein, ich habe es bei mir umgetellt, das ich texte immer direkt zeichnen lasse, damit die textinformationen im PDF erhalten bleiben, und wenn ich da FALSE drinnen lasse, dann habe ich statt 2mm abstand auf einmal 2cm abstand, gebe ich true rein, dann passt die asugabe 100% (genau so, wie wenn ich die text zuerst in pfade wandle)

edit: was dann natürlich nicht mehr funktioniert, ist wenn das SVG gestrecht werden soll, DANN werden wirklich die buchstaben übereinandergezeichnet ...
Kannst Du mir da mal ein Bild (SVG + Screenshot) anhängen? Welche Schrift verwendest Du?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#78

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 19:06
das svg file

XML-Code:
<?xml version="1.0" encoding="UTF-16"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="210mm" height="297mm" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd"
viewBox="0 0 210 297">
 <g id="Ebene_x0020_1">
  <metadata id="CorelCorpID_0Corel-Layer"/>
  <line fill="none" stroke="#AAA9A9" stroke-width="0.7056" x1="4" y1="29.04" x2="204" y2= "29.04" />
  <path fill="#131516" d="M65.4536 22.9805l0 3.6945 0.4196 0 0 -0.3359c0.1802,0.2647 0.4285,0.3971 0.7449,0.3971 0.3181,0 0.5908,-0.1249 0.8178,-0.3756 0.2273,-0.2502 0.341,-0.6049 0.341,-1.0633 0,-0.1934 -0.0269,-0.3748 -0.0809,-0.5441 -0.0537,-0.1701 -0.1284,-0.3148 -0.2235,-0.4347 -0.095,-0.1199 -0.2164,-0.2133 -0.3635,-0.2798 -0.1471,-0.0662 -0.3032,-0.0996 -0.4682,-0.0996 -0.2978,0 -0.5426,0.1206 -0.7345,0.3616l0 -1.3194 -0.4527 -0.0003 0 -0.0005zm0.631 1.59c0.1447,-0.172 0.3164,-0.2581 0.5153,-0.2581 0.197,0 0.3651,0.083 0.5037,0.2495 0.1386,0.1663 0.2083,0.4238 0.2083,0.7731 0,0.3405 -0.0724,0.5971 -0.2171,0.7691 -0.1448,0.1719 -0.3165,0.258 -0.5149,0.258 -0.2441,0 -0.438,-0.1168 -0.5808,-0.35 -0.0875,-0.1424 -0.1312,-0.3741 -0.1312,-0.6948 -0.0006,-0.326 0.0718,-0.5747 0.2167,-0.7468z"/>
  <line fill="none" stroke="#AAA9A9" stroke-width="0.7056" x1="4" y1="277" x2="204" y2= "277" />
  <text x="26.82" y="288.035" fill="#131516" font-weight="normal" font-size="2.8222" font-family="Arial">Bei Zahlungsverzug werden 1% Verzugszinsen pro Monat berechnet.</text>
 </g>
</svg>
habe dir die 3 pdfs mit angehängt, zweimal wegen dem kerning und einmal wegen dem path problem

mit folgendem code kann ich den Canvas (oder wie auch immer man das bei GDI+ nennt) wieder reparieren, danch funktionieren die normalen Linien wieder (ohne dem sehen normale einfache Linien sie wo oben im SVG definiert falsch aus)
und es ist auch egal, ob die Linie im SVG gezeichnet wird, oder ob ich die danach manuell auf das GPGraphic zeichne, er hat immer ein problem damit
Delphi-Quellcode:
Font := TGPFont.Create('Arial', 8);
    Font.GetLogFontW(Graphics, LF);
    Font.Free;
Angehängte Dateien
Dateityp: pdf test_path_problem_154.pdf (4,2 KB, 9x aufgerufen)
Dateityp: pdf test_kerning_true_446.pdf (4,1 KB, 7x aufgerufen)
Dateityp: pdf test_kerning_false_103.pdf (4,2 KB, 7x aufgerufen)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#79

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 19:59
Hallo,

ich glaube, es liegt an diesem Teil:
Delphi-Quellcode:
  SetMapMode(DC, MM_ANISOTROPIC);
  SetWindowExtEx(DC, Fpage_xres, Fpage_yres, nil);
  SetViewPortExtEx(DC, currX, currY, nil);
  SetViewPortOrgEx(DC, 0, 0, nil);
  SetWindowOrgEx(DC, 0, 0, nil);
Damit manipulierst Du das Koordinatensystem im GDI. GDI+ verwendet aber ein eigenes Koordinatensystem, das mit dem GDI nur bedingt zu tun hat. Ich vermute, diese beiden kollidieren irgendwie. Das dürfte auch der Grund für den Kerning-Fehler sein. PrepareKerning geht nämlich davon aus, dass der DC, von dem die Auflösung geholt wird, aud MM_TEXT steht. Da müsste man also je nach MapMode unterschiedliche Faktoren nehmen.

Gruß
xaromz

PS: Es gibt eine neuer Version, die das Problem mit dem Gradient löst, und ein neues Demoprogramm, bei dem der Zoom endlich besser arbeitet.
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#80

Re: Vektor Format anzeigen/drucken

  Alt 20. Nov 2007, 20:13
ja, es liegt an dem teil, meine frage ist, aber warum?

ich kann linien zeichnen, texte ausgeben, alles ohne probleme funktioniert mit dem koordinatensystem perfekt, aber sobald ein path dabei ist, sind alle linien dahinter kaput, texte funktionieren wieder
wenn ich dann systematisch vor jeder ausgabe im GDI+ den teil mit dem logischen Font reinschreibe, dann passen fast alle pfade (ein einziger wird nicht an der richtigen stelle gezeichnet) - aber das sagt eigetnlich ja aus, das es kein problem mit dem koordinatensystem ist, sondern ein nebeneffekt - würde ich sagen ...

und das problem mit dem kerning (also dem , true und ,false) hat nix damit zu tun, dann auch auf dem bildschirm, ohne den ganzen mapmode und co gibt es das selbe problem, nur nicht ganz so gravierend, da passt es nur um den faktor 1.8 nicht
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:13 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