2014-09-04 19 views
6

Voglio solo disegnare il cerchio che ha esattamente 15x15 pixel di dimensioni, e ha riempimento e contorno. Sto usando Java2D. Il problema è, come risultato di sequenze chiamate Graphics2D.fill(circle) e Graphics2D.draw(circle) il cerchio di 16x16 pixel disegnato. È a causa del meccanismo di outlinig Java2D interno, che per le dimensioni 15x15 fornisce una struttura a cerchi 16x16. Inoltre, se chiedo a Java2D di disegnare un contorno circolare di 14x14 pixel, esso disegna esattamente 14x14 px. Ho provato a giocare con l'antialias e i suggerimenti per il colpo di renderer senza fortuna.
illustration Ecco:Come disegnare la corsa interna con Java2D

  1. RenderingHints.VALUE_STROKE_NORMALIZE e Ellipse2D.Double(0, 0, 15, 15) contorno
  2. RenderingHints.VALUE_STROKE_PURE e lo stesso schema - Avviso di 1px distorsione
  3. precedente suggerimento ictus e Ellipse2D.Double(0, 0, 14, 14)
  4. RenderingHints.VALUE_STROKE_NORMALIZE, Ellipse2D.Double(0, 0, 15, 15) contorno e antialiasing accenno

Quindi, non posso disegnare il contorno del cerchio di 15px (anche 13 px, 29 px e qualsiasi dimensione dispari) con Java2D. C'è un modo per disegnare una sorta di tratto interno, che riempie i pixel al bordo interno della forma?

+0

IMHO non c'è modo di farlo nella libreria java Grapics/Graphics2D perché stavo affrontando lo stesso problema in passato e non riuscivo a trovare alcuna soluzione ragionevole. Ad ogni modo, l'opzione 1 e 4 sembra buona se non vuoi cambiare la tua libreria grafica. – dagi12

risposta

0

Sembra che "1" sia l'opzione desiderata, ma è presente un errore di errore. Da 0,0 a 15,15 in realtà dovrebbe essere 16 pixel. Se vuoi 15 pixel, avrai bisogno di 0,0 a 14,14.

Se è specificamente 15x15 con un colore predefinito, è possibile eseguire il pre-rendering in un programma di modifica delle immagini e utilizzare semplicemente drawImage.

È inoltre possibile considerare la conversione da 0,5, 0,5. Guarda come appare il # 2 quando fai Ellipse.Double (.5, .5,15.5,15.5) Potresti essere più felice con quel risultato.