# komischer Effekt bei g.drawPolygon



## Quaxli (12. Feb 2009)

Ich habe hier ein komische Problem, für das ich keine Lösung finde - vermutlich irgendwas Simples, was ich übersehe 

Folgender Code:


```
import java.awt.*;
import javax.swing.*;

public class PolyTest extends JPanel{

  Polygon referenz;
  
	public static void main(String[] args) {
		new PolyTest();

	}
	
	public PolyTest(){
		referenz = new Polygon();
		referenz.addPoint(20,20);
		referenz.addPoint(40,20);
		referenz.addPoint(40,70);
		referenz.addPoint(20,100);
		
		JFrame frame = new JFrame("test");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocation(100,100);
		frame.setSize(600,600);
		frame.add(this);
		frame.setVisible(true);
	}
	
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		g.setColor(Color.GREEN);
		g.fillPolygon(referenz);
		g.setColor(Color.RED);
		g.drawPolygon(referenz);
	}

}
```


Wenn man diesen ausführt, wird mit fillPolygon das Polygon in grün hingemalt, wie ich es erwartet habe. Der Aufruf von drawPolygon erzeugt aber nur "Pixelgewitter". Kann mir jemand sagen woran das liegt?


----------



## SlaterB (12. Feb 2009)

Screenshot? bei mir ist das ein normal eckiger Rand um die grüne Fläche


----------



## 0x7F800000 (12. Feb 2009)

kA, ich seh da auch nix auffälliges ???:L


----------



## Quaxli (12. Feb 2009)

Bei mir sieht das so aus:








[schild=1]Sehr seltsam[/schild]


----------



## 0x7F800000 (12. Feb 2009)

Hab sowas auch schon einmal gesehen, aber ich kann mich beim besten Willen nicht erinnern woran das lag :?
Ist das animiert, oder ist das ein einzelnes Bild?


----------



## Quaxli (12. Feb 2009)

Einzelnes Bild - der Code von ganz oben. Das Ganze ist ein Test, weil bei ein Testprogramm, weil bei einem größeren Programm der gleiche Murks rauskommt.


----------



## Quaxli (12. Feb 2009)

Hmm, es funktioniert wenn ich Antialising einschalte:


```
public void paintComponent(Graphics g){
		super.paintComponent(g);
		
		//neu
		Graphics2D g2 = (Graphics2D)g;
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		
		g2.setColor(Color.GREEN);
		g2.fillPolygon(referenz);
		g2.setColor(Color.RED);
		g2.drawPolygon(referenz);
	}
```


----------



## Steev (12. Feb 2009)

Würde mich mal interessieren in welcher zusammenstellung das Problem immer auftritt.


----------



## Marco13 (12. Feb 2009)

Soweit ich weiß deleigieren diese Methoden SEHR direkt an die darunterliegende Plattform. Der Universaltipp "neuesten Grafikkartentreiber installieren" könnte helfen...


----------



## Developer_X (12. Feb 2009)

Das liegt wahrscheinlich am JFrame
versuchs mal als Frame
vielleicht is es dann mal besser


----------



## Quaxli (13. Feb 2009)

So, hab' noch ein bißchen rumprobiert: Der Hinweis von Marco13 hat mich daran erinnert, daß das Auto-Install-Tool hier tatsächlich mit der Grafikkarten-Software rumgespielt hat. Einstellungen überprüft: Die Farbqualität von 16 Bit auf 32 Bit zurück gesetzt und schon ist die Anzeige, wie sie sein soll.
Die Lösung von DeveloperX wäre aber auch ein gangbarer Weg: Wenn man statt JFrame und JPanel auf Frame und Canvas umstellt, kriegt man auch eine vernünftige Anzeige. 
(Die "verbotene" Kombination von JPanel und Frame, liefert auch nur Murks).

[schild=1]Danke an Alle für Eure Hilfe[/schild]


----------



## Steev (13. Feb 2009)

Aha, gut zu wissen.


----------

