komischer Effekt bei g.drawPolygon

Status
Nicht offen für weitere Antworten.

Quaxli

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

Folgender Code:

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?
 
S

SlaterB

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

Quaxli

Top Contributor
Bei mir sieht das so aus:

poly.jpg



[schild=1]Sehr seltsam[/schild]
 

0x7F800000

Top Contributor
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

Top Contributor
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

Top Contributor
Hmm, es funktioniert wenn ich Antialising einschalte:

Code:
	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

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

Marco13

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

Quaxli

Top Contributor
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]
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben