24/06/20 14:47
AldoBaldo
Buongiorno, compari.
Ho da porre un quesito per portare a termine un progettino dei miei, che è ormai quasi concluso tranne che per un... ehm... "dettaglio" che non riesco ad affrontare -- le mie conoscenze di geometria del liceo sono ormai sepolte sotto quarant'anni di oblio, e si sono fatte MOLTO opache.
Il progettino in questione si ripromette di mettere a disposizione una funzione che riceva una stringa di dati nel formato tipico dei percorsi SVG, e la "traduca" in un oggetto di tipo GraphicsPath di Gdi+: Svg2GraphicsPath().
Quando scrivo "una stringa nel formato dei percorsi SVG" intendo quel che è compreso nell'attributo d di un tag di tipo path. Una cosa come questa, nel caso specifico generata da Inkscape:
Svg2GraphicsPath() è al momento operativa per tutti i comandi del formato, sia nella loro versione con spostamenti relativi, sia nella loro versione con spostamenti assoluti. Tutti, tranne i due pestiferi comandi 'a' e 'A', che fanno capo agli archi ellittici (EllipticalArc). Al punto in cui si trova, la funzione Svg2GraphicsPath() "sputa" un errore, schifata, se incontra un comando 'a' o 'A' (almeno posso già usarla con tutti gli altri comandi).
Il problema nasce dal fatto che SVG e Gdi+ hanno moltissimi punti in comune, ma per gli archi ellittici impiegano due metodi completamente diversi, e io non sono in grado di convertire l'uno nell'altro. Non è che ho bisogno un consiglio, è che proprio non so da che parte cominciare e avrei bisogno di qualche anima intrepida che raccogliesse la sfida e si facesse carico di risolvere il problema al posto mio, passandomi un procedimento e delle formule abbastanza semplificati da permettermi di tradurli nel codice corrispondente. Insomma, non è un problema di programmazione, è un problema di geometria!
Ho già predisposto il codice che estrae dalla stringa in formato SVG i parametri degli archi ellittici, trasformandoli in PointF e in REAL di Gdi+. Belli da vedere, ma non so che farmene...
Se qualche cuor di leone si fa avanti, posso mettere a disposizione la documentazione da W3C e da Microsoft della quale dispongo. Tempo fa, Lumo provò molto gentilmente ad aiutarmi, ma non riuscii a stargli dietro e abbandonai l'idea per surriscaldamento cerebrale.
Ho da porre un quesito per portare a termine un progettino dei miei, che è ormai quasi concluso tranne che per un... ehm... "dettaglio" che non riesco ad affrontare -- le mie conoscenze di geometria del liceo sono ormai sepolte sotto quarant'anni di oblio, e si sono fatte MOLTO opache.
Il progettino in questione si ripromette di mettere a disposizione una funzione che riceva una stringa di dati nel formato tipico dei percorsi SVG, e la "traduca" in un oggetto di tipo GraphicsPath di Gdi+: Svg2GraphicsPath().
Quando scrivo "una stringa nel formato dei percorsi SVG" intendo quel che è compreso nell'attributo d di un tag di tipo path. Una cosa come questa, nel caso specifico generata da Inkscape:
<path d="m 18.9,54.7 c 0,0 6.1,-35.2 23.1,-26.4 17,8.7 9.4,30.2 9.4,30.2 l -20,26.8 c 0,0 16.3,-24.2 7.2,-32.5 -9,-8.3 -19.7,1.9 -19.7,1.9 z" />
Svg2GraphicsPath() è al momento operativa per tutti i comandi del formato, sia nella loro versione con spostamenti relativi, sia nella loro versione con spostamenti assoluti. Tutti, tranne i due pestiferi comandi 'a' e 'A', che fanno capo agli archi ellittici (EllipticalArc). Al punto in cui si trova, la funzione Svg2GraphicsPath() "sputa" un errore, schifata, se incontra un comando 'a' o 'A' (almeno posso già usarla con tutti gli altri comandi).
Il problema nasce dal fatto che SVG e Gdi+ hanno moltissimi punti in comune, ma per gli archi ellittici impiegano due metodi completamente diversi, e io non sono in grado di convertire l'uno nell'altro. Non è che ho bisogno un consiglio, è che proprio non so da che parte cominciare e avrei bisogno di qualche anima intrepida che raccogliesse la sfida e si facesse carico di risolvere il problema al posto mio, passandomi un procedimento e delle formule abbastanza semplificati da permettermi di tradurli nel codice corrispondente. Insomma, non è un problema di programmazione, è un problema di geometria!
Ho già predisposto il codice che estrae dalla stringa in formato SVG i parametri degli archi ellittici, trasformandoli in PointF e in REAL di Gdi+. Belli da vedere, ma non so che farmene...
Se qualche cuor di leone si fa avanti, posso mettere a disposizione la documentazione da W3C e da Microsoft della quale dispongo. Tempo fa, Lumo provò molto gentilmente ad aiutarmi, ma non riuscii a stargli dietro e abbandonai l'idea per surriscaldamento cerebrale.
Ultima modifica effettuata da AldoBaldo 24/06/20 14:48
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.