2011-09-07 12 views
9

G'day, mam JPanel z niektórymi obiektami Line2D na nim. Problem polega na tym, że kiedy rysuję tę linię, nie pojawia się ona tak, jak chcę. Linie nie są gładkie, trudno wyjaśnić w słowach, więc jestem delegowania obrazu,Jak zrobić piksel w Line2D w - Graphics2D

enter image description here

Powiększony Area,

enter image description here

Jak by wyglądały bardziej dopracowany niż pomarszczony.

Dzięki

+3

Nie znam dobrze java i nie wiem dobrze: ale myślę, że szukasz antyaliasingu. – Dair

Odpowiedz

10

Problemem jest to, że prawdopodobnie nie masz antialiasing włączony context grafiki. Spróbuj następującą linię przed rysować:

graphics.setRenderingHint(
     RenderingHints.KEY_ANTIALIASING, 
     RenderingHints.VALUE_ANTIALIAS_ON); 

(gdzie oczywiście graphics to Graphics2D instancja).

Później, gdy okazuje się, że tekst jesteś rysunek jest brzydki i postrzępione, będziemy chcieli użyć

graphics.setRenderingHint(
     RenderingHints.KEY_TEXT_ANTIALIASING, 
     RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 

jednak tekst jest nieco bardziej skomplikowana; istnieje kilka wartości tej wskazówki, których możesz użyć w zależności (między innymi) od typu ekranu, na który rysujesz tekst. Powinieneś przeczytać RenderingHints.KEY_TEXT_ANTIALIASING API doc dla tych szczegółów.

+0

Po prostu edytowałem twój kod, koncepcja była poprawna, ale setRenderingHits wymaga obiektu Map. więc zmieniłem go na setRenderingHint, a stałe są w RenderingHints zamiast Graphics2D. :) – doNotCheckMyBlog

+0

Ups, masz rację, chociaż przypadkowo nadpisałem twoją edycję, gdy dodałem trochę więcej szczegółów. Naprawiłem to teraz, 'setRenderingHints-> setRenderingHint'. Dzięki! –

+0

Anti-aliasing powinien być domyślnie włączony IMO (nie jest, ale ktoś w Oracle powinien to zrobić) –