QtSvg

Alles rund um die Programmierung mit Qt
Antworten
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

QtSvg

Beitrag von ConfusedSushi »

Hallo,

mir ist gerade etwas mergwürdiges aufgefallen.

Und zwar liefert QSvgRenderer::boundsOnElement
und QGraphicsSvgItem::boundingRect nicht die werte
welche ich erwarte.

Also in der SVG-Datei steht eine Größe von z.B.
200x200 und QtSvg liefert mir 201x201.

Ein Bug? Ein Feature? Mach ich was falsch?
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ich habe version qt4.3 und 4.4 beide machen es richtig
ich convertiere sie einfach so:

Code: Alles auswählen

static inline QPixmap RenderPixmapFromSvgByte(  QByteArray streams ) 
{
        QSvgRenderer  svgRenderer( streams );
        QPixmap pix(  svgRenderer.defaultSize() );
        pix.fill(Qt::transparent);
        QPainter paint(&pix);
        svgRenderer.render(&paint);
        return pix;
}
code aus meinen Miniscribus http://code.google.com/p/fop-miniscribus/
QByteArray streams ist einfach das ausgelesenes file ... oder Dom
.........................
speack português italiano deutsch english castellà qt
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

Ich brauch aber unbedingt nur einzelne Elemente aus dem SVG
und QGraphicsView wär auch nicht schlecht. :?:

Ein weiteres Problem ist das Antialiasing,
ich würde die Elemente gern Pixelgenau positionieren.
Ein abschalten hat keine Wirkung gezeigt.

Das war unter Qt4.3/X11.

Ich werd mal schauen wie es sich ohne QGraphicsView
verhält ...
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

Ein Versuch unter Windows hat gezeigt das dort alles so funktioniert wie ich es erwarte :?

Patrick arbeitest du unter Windows?
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

ConfusedSushi hat geschrieben:Ein Versuch unter Windows hat gezeigt das dort alles so funktioniert wie ich es erwarte :?

Patrick arbeitest du unter Windows?
Zu 40% - 50% mit window der rest mac und Ubutu..
debug gdb nur auf linux

builde mal http://code.google.com/p/fop-miniscribus/ und mache ein neuen layer mit einen SVG speichere das fop file und lese den xsl-fo code vom bild

oder auch externe bilder
im ordner ....
/Sample_fop/external_image.fop

http://fop-miniscribus.googlecode.com/s ... _image.fop

sowie inline svg

Code: Alles auswählen

<fo:instream-foreign-object width="320pt" height="330pt" >
                              <svg:svg version="1.2" baseprofile="tiny" xmlns="http://www.w3.org/2000/

http://fop-miniscribus.googlecode.com/s ... cument.fop

subversion letzte

Code: Alles auswählen

svn co http://fop-miniscribus.googlecode.com/svn/trunk/fop_miniscribus.1.0.0/ miniscribus 
.........................
speack português italiano deutsch english castellà qt
ConfusedSushi
Beiträge: 57
Registriert: 18. Januar 2008 16:46
Wohnort: Berlin

Beitrag von ConfusedSushi »

Unter Windows tritt das Problem nicht auf weil ich unter Windows Qt 4.4 benutze ... mit 4.3.4 siehts unter Windows genauso aus wie unter Linux mit 4.3 :(

Da scheint wohl die 4.3 im Umgang mit Svg's noch etwas buggy zu sein.
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

warscheinlich findet sich ein Patch hier: http://websvn.kde.org/trunk/qt-copy/patches/ wenn man eine entsprechend alte Revision nimmt, als qt-copy noch 4.3 enthielt.
Antworten