Pergunta

Imagine que você está desenhando um mapa das fronteiras do condado. Você é dado um conjunto de polígonos, um para cada limite, e você desenhar cada polígono.

Em lugares onde dois municípios partilham uma fronteira você acabar de desenhar a fronteira duas vezes. Na ausência de efeitos parciais de transparência, e com uma caneta sólida, isso não é problema.

Mas, em mapas, as fronteiras deste tipo são habitualmente mostrado por linhas traço-pontilhada. Neste caso, situações como a descrita abaixo pode acontecer:

text alt

Observe como o padrão de traço, que normalmente é traço-ponto-ponto, fica asneira, onde as duas áreas compartilham uma fronteira. Neste caso, isso aconteceu para se tornar um padrão longdash-ponto, mas em geral ele poderia fazer qualquer coisa de coincidência aparência normal para a criação de uma linha sólida.

Como funciona / deve mapear software de renderização evitar artefatos deste tipo ocorram?

Foi útil?

Solução

O artefato é devido ao fato de que o pedaço de borda é desenhada duas vezes. Em vez de tentar suprimir tais artefatos, você poderia tentar não chamar a troços transfronteiriços duas vezes, mantendo uma lista de segmentos já desenhadas na memória, e se você encontrar um trecho que já está desenhado, você não desenhá-la novamente.

Outras dicas

As suas cores padrão da escova alguns pixels e as folhas pretas alguns pixels sozinho. Em vez de deixar o pixel sozinho, você pode configurar o seu padrão de pincel para colorir os pixels brancos (ou qualquer que seja a sua cor de fundo é)?

Outra possibilidade é a de sempre tirar suas fronteiras municipais duas vezes -. Uma vez com um padrão sólido branco, e novamente com o padrão de pincel de sua escolha

Eu suponho que eles quebram suas linhas de fronteira em segmentos, em seguida, remova as sobreposições.

Este é principalmente um problema geométrico, não um problema de desenho.

Em vez de ir com uma linha tracejada, você poderia fazê-lo Zip-a-tom estilo, como este:

text alt

Zip-a-tom era este material arte gráfica que era basicamente uma folha pegajosa de plástico com um padrão regular (impressão) de pontos sobre ele. Para usá-lo, você iria colocar uma folha grande de que ao longo do seu desenho e cortá-la em torno das áreas em seu desenho que você queria zip-a-tons, e, em seguida, retire as peças que você não quer.

Para esta imagem, eu só fui com um padrão alternado de xadrez, com as linhas de dois pixels de largura. Porque todas as linhas são desenhadas a partir de um grande bloco (virtual) deste padrão de xadrez, você nunca precisa se preocupar com artefatos estranhos nas articulações ou quaisquer efeitos de sobreposição.

linhas angulares são um pouco complicado, mas basicamente você imaginar as bordas da linha espécie de corte através de pixels, e assim você desenhá-los na cor adequada do grau em vez de preto total (no caso da linha de 45 graus aqui , os pixels são desenhados com RGB (170, 170, 170), mas qualquer ângulo poderia ser processado com tons apropriados).

Eu não tenho certeza se GDI + pode fazer isso facilmente usando as escovas texturizados, mas talvez. Caso contrário, você teria o costume de código-lo. A vantagem deste método linhas cinzas em apenas sólidos seria que isso permitiria que alguns dos antecedentes para mostrar completamente.

Esta é uma pergunta interessante que eu realmente nunca pensei sobre. Acho que a única solução real é tornar todo o figura complexa como uma série de linhas ou caminhos que não se sobrepõem a qualquer lugar. Não estou surpreso que GDI + não lidar com esta situação de alguma forma automática.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top