svg vagy más vektorgrafikus megoldás c#-ban

Sziasztok!

A következő problémám van.

Adott egy fa struktúra, ezt szeretném grafikusan megjeleníteni egy ablakban úgy, hogy
lehessen a viewport-ot mozgatni, illetve lehessen zoomolni ki/be.

A programot c#-ban fejlesztem, egyelőre windows alá, de linux alatt (mono-val) is egész szépen muzsikál.

a kérdésem az lenne, hogy tudtok-e c#-hoz valami crossplatform megoldást, amivel egy
ilyent meg lehet csinálni, és ingyenes? Adobe SVG plugin szerintem nem jó, mert az valszeg nem megy linux alatt.

Jelenleg saját osztályokat definiáltam, és azok csinálják a kirajzolást, de a megoldásom a nagyon
igényestől azért messze van sajnos, és nincs kedvem kiszenvedni egy teljes vektorgrafikus könyvtárat.

Amire szükségem van: vonal húzás, és doboz rajzolás (színátmenettel), semmi más elemre nincs most szükségem.

Ha van rá lehetőség, akkor jó lenne, ha az elemeket ki is lehetne jelölni, illetve akciókat futtatni rajta.

Hozzászólások

Nem tudom mennyire segít a projekt ezen szakaszán, de a Qt-s Graphics View Framework tökéletes lenne neked.
Cross-platform, GPL... Igaz C++.

A C# binding neve Qyoto (http://cougarpc.net/qyoto/)
Sose használtam.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Csak tipp: Cairo (http://www.mono-project.com/Drawing)? Én ugyan nem vagyok benne túl mélyen a témában -most kezdek így "hobbiszinten" C#/GTK#-pal foglalkozni :)-, de cairo-val mindent meg lehet rajzolni. Illetve a Gdk.PixBuf is képes SVG megjelenítésre, méretezésre.

Egyetértek. Cairo. Én sem használtam, de jó múltkorokban nézegettem hogy mit tud. Ha jól tudom, akkor már az Inkscape vektorgrafikus motorja is cairo-val megy (vagy fog menni a fejlesztői verziótól felfelé). Mindent tud rajzolni, élbemosással, színátmenetekkel stb. Komplett megoldás. És LGPL-es.

Tud SVG-t és pixeles képet is generálni többek között. Így SVG-vel sem kell foglalkoznod, viszont ha meg akarod a progid kimenetét máshol is jeleníteni, akkor az SVG tökéletes megoldás :) Minden vektorgrafikus szerkesztő program támogatja. Firefox is.

Pontosan nem világos, hogy mit akarsz csinálni. SVG amennyire én tudom egy vektoros rajz "interchange format", csak megjelenítésre, kijelölésről, szerkesztésről nem szól.

Cairo szerintem is jó megoldás lehet. Ez Linuxon (pontosabban, Gnome-on) van leginkább otthon, de van Windowsos portja is, szerintem binárisból telepíthető.

Én úgy tudom, hogy a Cairo csak vonalakat és felületeket rajzol, nem kezeli objektumként a rajzolt dolgokat, tehát kijelölést, mozgatást ilyesmit nem tud. Tehát mindent le kell programozni.

Igazából olyan keretrendszert, ami azt célozza meg, hogy grafikus objektumok, rajtuk kijelölés, mozgatás, létrehozás törlés műveletekkel egyedül a GEF-et ismerem (ez Javás). Viszont az is olyan, hogy nem tudnám nyugodt lélekkel ajánlani :-(. Úgyhogy nem tudok jobb megoldást, mint a Cairo+leprogramozni a kijelölést, műveleteket.

Szia!

Én GEF-ből írtam a diplomamunkámat, ezért is lepett meg, hogy c# alatt nincs ilyen
jószág. :)

Éppen ezért egy "általános" keretrendszert akarok csinálni (már van dobozom, vonalam,
zoom, layerek), ahol ezek a dolgok működnek.

A megjelenítés az jelenleg GDI+ - os, de tetszőleges megjelenítésre át lehet írni. (refactoring után:))

Amire egyébként szükségem lenne, az egy nagyon egyszerű dolog, egy "sima" fá-t akarok ábrázolni (egy elemnek akárhány gyereke lehet, asszem n-árisnak hívják), ahol az egyes elemeket dobozok jelképezik,
és lehet scrollozni meg zoomolni.

Jelenleg ez a gány kategóriában van megcsinálva, azért is gondoltam, hogy megpróbálom szépen/igényesen megcsinálni, és ez az elképzelés fejlődött a "keretrendszer"-ig. (kb. 6-8 osztály az egész, nem kell itt 100k kódokra gondolni)

Ha van valakinek kedve segíteni, akkor feltolom egy publikus svn-be, és hajrá. Egy áttervezés azért egyelőre ráférne.

Sziasztok!

Úgy néz ki, hogy marad a régi verzió, de hála a Szirmay féle fantasztikus:) grafika tárgy
jegyzetnek (de jó, hogy már vége:))

http://www.fsz.bme.hu/~szirmay/grafika/bme2dsys.pdf

komoly refactoring után lassan működni fog.

Sajnos a qt és a gtk# nem jöhet szóba, mert a progi nem gpl alkalmazás lesz, viszont ha a grafikus könyvtárat sikerül valami értelemes formába összerakni, akkor azt természetesen kiadom a köznek, valami barátságos bsd vagy apache licensszel.

Cairo úgy látom, hogy a gdi+ - hoz hasonlít, de nekem egy magasabb szintű megoldásra lenne szükségem.

A QT-s megoldás egyébként egész jópofa, most így utólag nézve én is valami hasonlót csináltam meg :)