SVG auf Form

Spezielle Fragen zu 2D- und 3D-Grafik, Sound und Video
Antworten
besenmuckel
Foriker
Beiträge: 46
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

SVG auf Form

Beitrag von besenmuckel » Di 11. Nov 2014, 20:17

Ich möchte ein Kartenspiel programmieren. Die verschiedenen Kartenset liegen bei mir als svg im Verzeichnis /usr/share/kde4/apps/carddecks/ vor.
Wie bekomme ich die einzelnen Karten aus einer SVG-Datei auf die Form? Ich kann aus den kompletten Kartensatz den Bereich einer einzelne Karte in ein DrawingAreal laden. Sieht aber nicht schön aus. In der SVG stehen ja alle Pfade für die einzelnen Karten, das abgerundete Rechteck usw. Weiss aber nicht wie man das machen kann. Auch Suche im Netzt hat mir nichts gebracht.

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: SVG auf Form

Beitrag von tux_ » Mi 12. Nov 2014, 13:09

In gb.qt4 (und gb.gtk/gb.gtk3) gibt es die Klasse SvgImage[0]. Damit kannst du SVG-Dateien laden (SvgImage.Load()) und an die aktuelle Position des aktuellen Zeichengeraets (Paint-Devices) zeichnen (SvgImage.Paint()).

Beantwortet das die Frage? Ich kann mir unter vielen deiner Aussagen nichts vorstellen, z.B.:

Ich kann aus den kompletten Kartensatz den Bereich einer einzelne Karte in ein DrawingAreal laden. Sieht aber nicht schön aus.


Schoenheit liegt immerhin im Auge des Betrachters -- wie sieht es aus und was erwartest du? Und ist dein ganzes Deck in *einer* SVG-Datei (a la Tileset[1]) oder was meinst du mit "Bereich"? Auf eine DrawingArea wirst du kaum verzichten koennen.

[0] http://gambaswiki.org/wiki/comp/gb.qt4/svgimage
[1] http://en.wikipedia.org/wiki/Tile-based ... e#Tile_set
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

besenmuckel
Foriker
Beiträge: 46
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: SVG auf Form

Beitrag von besenmuckel » Mi 12. Nov 2014, 19:13

Die verschiedenen Kartensets aus den Paket kdegames-card-data liegen als svgz vor. Die Infos zu SvgImage.Paint sind sehr wenig und für mich mit wenig Englischkenntnissen besonderst schwer. Ich lege mal meine Idee vor längerer Zeit gemacht als Anhang bei. Hier habe ich die svgz aus den Programm xskat entpackt und als german.svg im Projekt drin.
Jetzt meine Wunschliste.
Im Beispiel habe ich mal 2 Button für verschiedene Karten. Kann man es vereinfachen, oder muss ich es für alle 32 Karten so machen. Wie bekomme ich es auf ein kleineres DrawingAreal. Mit SvgImage.Paint wäre es besser. Nur weiss ich nicht mal den Anfang, wie ich es auslese und anwende.
Dateianhänge
karten_1-0.0.1.tar.gz
(144.42 KiB) 75-mal heruntergeladen

tux_
Moderator
Beiträge: 946
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: SVG auf Form

Beitrag von tux_ » Do 13. Nov 2014, 20:55

Es handelt sich also doch um ein Tileset. In diesem Fall wuerde ich vorschlagen, dass du das Tileset in die einzelnen Karten zerschneidest und diese in einem Array (oder auch in einer Collection) ablegst. Dann kannst du jede dieser Karten (individuelle Picture-Objekte) einzeln (skaliert) darstellen und umherschieben.

gambas code
Dim hPic As Picture

' Beispiel: Herz-Bube extrahieren. Einzelne Karten sind 144 Pixel breit und
' 223 Pixel hoch im Tileset
hPic = New Picture(144, 223, True)
Paint.Begin(hPic)
' karte ist das Tileset. Der Herz-Bube ist in der ersten Zeile (Y-Offset = 0),
' in der vierten Spalten (X-Offset = 3*144).
Paint.DrawPicture(karte, 0, 0, 144, 223, Rect(3 * 144, 0, 144, 223))
Paint.End()
' Bild in einer Collection speichern
$cCards["herz:bube"] = hPic

' In die DrawingArea zeichnen
Paint.Begin(DrawingArea1)
Paint.DrawPicture($cCards["herz:bube"], 0, 0)
Paint.End()

Reicht dir das als Ansatz?
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

besenmuckel
Foriker
Beiträge: 46
Registriert: Di 4. Nov 2014, 21:11
Kontaktdaten:

Re: SVG auf Form

Beitrag von besenmuckel » Sa 15. Nov 2014, 21:46

Danke!
hast mir sehr geholfen mit deinen Erklärungen. Jetzt habe ich erst einmal einen Anfang. Alles weitere werde ich alleine schaffen. Musste Debian-Jessie auf meiner der zweiten Partition starten. Als Standart arbeite ich noch vorwiegend mit Debian-Wheezy, die dort installierte Gambas-Version ist wahrscheinlich zu alt und kennt kein Paint.DrawPicture. Unter Jessie läuft alles. Muss nur noch Bild-Variablen einrichten, da hängt noch was. Die Ausgabe der Bilder werde ich in einer PictureBox machen. Als Anfänger backe ich erst einmal kleine Brötchen und werde ich bei einen Kartenset bleiben. Kann ich ja später wenn ich mehr Wissen gelöffelt habe anderst machen.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast