Graphics fillOval weiche Kanten

FunnyO

Mitglied
Hallo,

Ich habe überall danach gesucht, kann jedoch nicht herausfinden, wie es funktioniert. Ich möchte bei fillOval die kantigen Ränder etwas weicher machen, oder gar zu einem Verlauf in die Umgebung machen. Leider kann ich nichts finden. Man kann wohl kaum von Java gute Grafik erwarten... Hier ist der Code:

Java:
public void paint(Graphics gra) {
     if (s == true) {
       Random rc = new Random();
         PointerInfo a = MouseInfo.getPointerInfo();
         Point c = a.getLocation();
         int x2 = (int) c.getX();
         int y2 = (int) c.getY();
         x = x2 - 200;
         y = y2 - 200;
       this.repaint();      
       float r = (float) (rc.nextFloat());
       float g = (float) (rc.nextFloat());
       float b = (float) (rc.nextFloat());
       Color rColor = new Color(r, g, b);
       rColor.brighter();
       gra.setColor(rColor);
       gra.fillOval(x, y, 400, 400);
}

Danke für die Hilfe!
 
Zuletzt bearbeitet von einem Moderator:

Enceladus271

Bekanntes Mitglied
Wenn du einen richtigen Farbverlauf haben willst kann ich dir nicht helfen. Aber Antialiasing ist ganz einfach:
Java:
  @Override
   protected void paintComponent( Graphics g ) {
     super.paintComponent( g );
     Graphics2D g2 = (Graphics2D) g;
     g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
     g2.fillOval( 10, 10, 190, 90 );
   }
 

FunnyO

Mitglied
Das hat den Trick gemacht, danke :D
Antialising war alles, was ich gebraucht habe. Ein Verlauf wäre nur eine Erweiterung :D Danke!
 

FunnyO

Mitglied
Danke! Habe es nun auf Bilinear gestellt, da es näher an Farbverlauf dran kommt.
Falls jemand weiß, wie ich die Farbe nun mit der Umgebung verschmelzen lassen kann, also ins Transparente geht, wäre es sehr hilfreich. Ich zeichne die Ovalen übereinander, somit sollte nicht plötzlich ein transparentes Loch entstehen, sondern die Farbe, die zuvor gezeichnet wurde behalten :D
 

BRoll

Bekanntes Mitglied
Für Transparenz musst du nur noch einen Alpha Wert angeben.
Zb. new Color(r,g,b,a); mit a = 255 (=> volle abdeckung)
mit a = 0 (=> keine abdeckung).
 

FunnyO

Mitglied
Ah, und wie mache ich, dass fillOval die Transparenz nur am Rand verwendet? muss ich vielleicht ein weiteres Objekt zeichnen?
 

BRoll

Bekanntes Mitglied
Ja so könntest du es machen. Einmal das Oval mit Transparenz und darüber das kleinere gefüllte.
Dann ist nur noch das was am Rand übrig bleibt transparent.
 

FunnyO

Mitglied
Umständlich, aber es passt, habe nun 3 Ovale mit +1 Pixel mit je 0.75,0.5 und 0.25 Transparenz auf das :D erste Oval gelegt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Hashmap mit 2D Graphics Spiele- und Multimedia-Programmierung 7
kaoZ Graphics Objekt liefert null Spiele- und Multimedia-Programmierung 14
S Graphics Objekt weiterreichen? Spiele- und Multimedia-Programmierung 4
Steev Eigener Graphics-Context Spiele- und Multimedia-Programmierung 10
S Graphics.drawString (Graphics2D.drawString) Y-Problem Spiele- und Multimedia-Programmierung 4
G Wie bekomme ich einen Punkt (Graphics) Spiele- und Multimedia-Programmierung 2
K stringWidth bei Graphics von JPanel und Printer unterschiedl Spiele- und Multimedia-Programmierung 4
P Graphics Klasse Spiele- und Multimedia-Programmierung 3
N Performance Problem bei mit Graphics Spiele- und Multimedia-Programmierung 6
V Graphics oder Graphics2D Zeichenfunktion gesucht? Spiele- und Multimedia-Programmierung 4
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
O transparente farbe in Image mit Graphics Spiele- und Multimedia-Programmierung 8
G Graphics bei Java aufteilen Spiele- und Multimedia-Programmierung 3
C Graphics 2D Zeichnen Spiele- und Multimedia-Programmierung 4
F einzelne Polygone(Graphics) schneller als and. Fig. zeichnen Spiele- und Multimedia-Programmierung 3
M Weiche Kante bei Zeichenobjekten Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben