Portál AbcLinuxu, 12. května 2025 06:29

Dotaz: Java: vyhlazování hran

4.7.2006 11:07 Geralt
Java: vyhlazování hran
Přečteno: 251×
Odpovědět | Admin
Dobrý den, nevíte někde jakým způsobem se dají v javě vyhlazovat hrany v obrázcích? Když nastavím Graphics2D pomoci setRenderingHint nejaky typ vyhlazovani tak mi to vyhladi texty, ale hrany v obrazku ne. Diky, Geralt
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Wan-To avatar 4.7.2006 11:16 Wan-To | skóre: 16 | blog: WanBlog | Čelákovice
Rozbalit Rozbalit vše Re: Java: vyhlazování hran
Odpovědět | | Sbalit | Link | Blokovat | Admin
Geralte, prostě to nejde :-)
4.7.2006 17:22 8an | skóre: 30
Rozbalit Rozbalit vše Re: Java: vyhlazování hran
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jde to, ale v 1.4 je to dost komplikované, nevím jestli to v 1.5 konečně nezjednodušili:
  public static void antialias(Graphics g)
  {
    Graphics2D g2d = (Graphics2D)g;

    // Enable antialiasing for shapes
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                         RenderingHints.VALUE_ANTIALIAS_ON);
    
    // Enable antialiasing for text
    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                         RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    // Prefer quality over speed
    g2d.setRenderingHint( RenderingHints.KEY_RENDERING,
                          RenderingHints.VALUE_RENDER_QUALITY );
  }
A pokud chceš zapnout antialiasing nějaké Swing kompomenty, tak musíš udělat vlastní metodu paintComponent, třeba:
  private class AALabel extends JLabel
  {
    protected void paintComponent(Graphics g)
    {
      antialias(g);
      super.paintComponent(g);
    }
  }
If you build an operating system that even an idiot can use, only idiots will use it.
4.7.2006 21:53 Geralt
Rozbalit Rozbalit vše Re: Java: vyhlazování hran
Dik, hned to vyzkousim :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.