Domanda

Immagina di disegnare una mappa dei confini della contea. Ti viene dato un set di poligoni, uno per ogni limite, e disegni ciascun poligono.

Nei luoghi in cui due contee condividono un bordo, finisci per disegnarlo due volte. In assenza di effetti di trasparenza parziale e con una penna solida, questo non è un problema.

Ma, sulle mappe, i bordi di questo tipo sono abitualmente mostrati da linee tratteggiate. In questo caso, possono verificarsi situazioni come quella illustrata di seguito:

alt text

Nota come il motivo a tratteggio, che normalmente è un punto-punto, viene incasinato nel punto in cui le due aree condividono un bordo. In questo caso, è successo a diventare un modello punto lungo, ma in generale potrebbe fare qualsiasi cosa, dall'aspetto casualmente normale alla creazione di una linea continua.

In che modo / dovrebbe il software di rendering delle mappe impedire che si verifichino artefatti di questo tipo?

È stato utile?

Soluzione

Il manufatto è dovuto al fatto che il bordo viene disegnato due volte. Invece di provare a sopprimere tali artefatti, potresti provare a non disegnare due volte le sezioni del bordo, mantenendo un elenco di segmenti già disegnati in memoria e se incontri un tratto già disegnato, non lo disegnerai di nuovo.

Altri suggerimenti

Il motivo del pennello colora alcuni pixel di nero e lascia solo alcuni pixel. Invece di lasciare il pixel da solo, puoi impostare il motivo del pennello per colorare quei pixel di bianco (o qualunque sia il tuo colore di sfondo)?

Un'altra possibilità è quella di disegnare sempre i confini della contea due volte, una volta con un motivo bianco solido e di nuovo con il motivo pennello di tua scelta.

Suppongo che rompano le loro linee di confine in segmenti, quindi rimuovono le sovrapposizioni.

Questo è principalmente un problema geometrico, non un problema di disegno.

Invece di seguire una linea tratteggiata, puoi farlo in stile Zip-a-tone , in questo modo:

alt text

Zip-a-tone era questa roba d'arte grafica che era fondamentalmente un foglio di plastica appiccicoso con un normale motivo (stampabile) di punti su di esso. Per usarlo, dovresti stenderne un grosso foglio sul tuo disegno e tagliarlo attorno alle aree del tuo disegno che avresti voluto tonificare e poi staccare le parti che non volevi.

Per questa immagine, ho appena scelto una scacchiera alternata, con le linee larghe due pixel. Poiché tutte le linee sono tratte da un grande blocco (virtuale) di questo schema a scacchiera, non devi mai preoccuparti di strani manufatti alle articolazioni o di eventuali effetti di sovrapposizione.

Le linee ad angolo sono un po 'complicate, ma fondamentalmente immagini i bordi della linea che tagliano i pixel, e quindi li disegni con la sfumatura appropriata del grado invece del nero completo (nel caso della linea a 45 gradi qui , i pixel sono disegnati con RGB (170, 170, 170), ma è possibile renderizzare qualsiasi angolo con sfumature appropriate.

Non sono sicuro che GDI + possa farlo facilmente usando i pennelli testurizzati, ma forse. Altrimenti dovresti codificarlo in modo personalizzato. Il vantaggio di questo metodo rispetto alle sole linee grigie sarebbe che ciò consentirebbe ad alcuni sfondi di mostrare.

Questa è una domanda interessante a cui non ho mai pensato. Penso che l'unica vera soluzione sia quella di rendere l'intera figura complessa come una serie di linee o percorsi che non si sovrappongono da nessuna parte. Non mi sorprende che GDI + non gestisca questa situazione in modo automatico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top