Wie kann ich machen *Teile* einer svg-Datei?

Möchte ich render Teile einer svg-Datei durch die Namen, sondern für das Leben von mir ich kann nicht herausfinden, wie zu tun (mit python + gtk).

Hier ist die svg-Datei in Frage: http://david.bellot.free.fr/svg-cards/files/SVG-cards-2.0.1.tar.gz (Update: diese Datei nicht mehr vorhanden, aber Sie können es aufzuspüren bei http://svg-cards.sourceforge.net/)

Auf seiner Seite, David, sagt:

Können Sie eine Karte ziehen, entweder durch
Rendern Sie die Datei auf eine pixmap und
clipping jede Karte manuell oder durch
mithilfe der Karte ist der name durch einen DOM
- Schnittstelle. Alle Karten sind eingebettet in
eine SVG-Gruppe.

Ich weiß nicht, was er bedeutet, von einem DOM-Schnittstelle. Ich habe getan, einige suchen und das beste Ergebnis fand ich, dass scheint zu passen, was ich tun möchte, ist:

QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg"));
QGraphicsSvgItem *black = new QGraphicsSvgItem();
QGraphicsSvgItem *red   = new QGraphicsSvgItem();

black->setSharedRenderer(renderer);
black->setElementId(QLatin1String("black_joker"));

red->setSharedRenderer(renderer);
red->setElementId(QLatin1String("red_joker"));

Beachten Sie jedoch, dass es für Qt und ist auch nicht in python geschrieben.

Dies ist, was ich habe, so weit:

#!/usr/bin/env python

from __future__ import absolute_import

import cairo
import gtk
import rsvg

from xml import xpath
from xml.dom import minidom

window = gtk.Window()
window.set_title("Foo")
window.set_size_request(256, 256)
window.set_property("resizable", False)
window.set_position(gtk.WIN_POS_CENTER)
window.connect("destroy", gtk.main_quit)
window.show()

document = minidom.parse("cards.svg")
element = xpath.Evaluate("//*[@id='1_club']", document)[0]
xml = element.toxml()

svg = rsvg.Handle()
svg.write(xml)

pixbuf = svg.get_pixbuf()

image = gtk.Image()
image.set_from_pixbuf(pixbuf)
image.show()

window.add(image)

gtk.main()

Es nicht funktioniert, natürlich.

Was bin ich?

Schreibe einen Kommentar