Fläche invertiert füllen

filth

Bekanntes Mitglied
Hallo,

ich habe ein Rechteck A. In diesem Rechteck befindet sich ein weiteres, kleineres Rechteck B.
Rechteck A soll nun komplett mit einer Farbe gefüllt werden, wobei die Fläche von Rechteck B nicht gefüllt werden soll.

Die Koordinaten von B kenne ich - ich würde das jetzt so machen, dass ich drumherum 4 Rechtecke zeichne, um die restliche Fläche zu füllen. Geht es evtl einfacher?

Danke!
 

Marco13

Top Contributor
Wenn es nur darum geht, dass das innere Rechteck eine andere Farbe haben soll: Einfach drüberpinseln. Kaum etwas geht schneller, als ein einfarbiges Rechteck zu zeichnen. Wenn dort der Hintergrund erhalten bleiben soll: Du könntest ein Shape (d.h. einen Path2D) verwenden. Die können Löcher haben. Für diesen einfachen Fall könnte man ihn noch "per Hand" malen. Etwas weniger effizient, aber viel einfacher und flexibler wäre, die beiden Rectangles in Areas zu verwandeln, und dann mit Area (Java Platform SE 6) das innere vom äußeren abzuziehen.
 

Michael...

Top Contributor
Für Füll und Überlappungseffekte kann man auch AlphaComposites verwenden.
Hat den Vorteil, dass man sich nicht mit komplexen Figuren rumschlagen muss.

Hier mal ein Beispiel eines Rechtecks mit Loch, durch das der Hintergrund sichtbar bleibt:
Java:
import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.image.BufferedImage;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class NonFillDemo extends JFrame {

	public NonFillDemo() {
		this.getContentPane().setLayout(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1d, 1d, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0); 
		this.getContentPane().add(new NonFillComponent(), gbc);
		this.getContentPane().add(new BackgroundComponent(), gbc);
	}

	//Dummy Hintergrundbild
	class BackgroundComponent extends JComponent {
		Stroke stroke = new BasicStroke(10);
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Graphics2D g2 = (Graphics2D)g;
			g2.setStroke(stroke);
			g2.setColor(Color.ORANGE);
			int w = getWidth()/10;
			int h = getHeight()/10;
			for (int i=1; i<=20; i++)
				g2.drawLine(0, i*w, i*h, 0);
		}
	}

	class NonFillComponent extends JComponent {
		public void paintComponent(Graphics g) {
			int w = getWidth();
			int h = getHeight();
			// Erstellen des Images mit AlphaComposite
			BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
			Graphics2D g2 = image.createGraphics();
			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g2.setColor(Color.DARK_GRAY);
			g2.fillRect(20, 20, w-40, h-40);
			g2.setColor(Color.WHITE);
			g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OUT));
			g2.fillOval(50, 50, 100, 100);
			g2.dispose();
			//Zeichnen des Bildes auf die Komponente
			g.drawImage(image, 0, 0, null);
		}
	}

	public static void main(String[] args) {
		JFrame frame = new NonFillDemo();
		frame.setBounds(0, 0, 300, 300);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JavaFX Fläche auf Knopfdruck blinken lassen AWT, Swing, JavaFX & SWT 3
E JavaFX Sehr viel und unterschiedlich Großen Inhalt auf einer "Fläche" ... Umsetzbar ? AWT, Swing, JavaFX & SWT 3
S Bild fläche erzeugen AWT, Swing, JavaFX & SWT 10
3 Applet Applet zeigt nur weiße Fläche AWT, Swing, JavaFX & SWT 15
A SWT SWT - Unbekannte Fläche (Objekt) erscheint im Composite AWT, Swing, JavaFX & SWT 6
E Endlosschleife bei anklickbarer Fläche AWT, Swing, JavaFX & SWT 2
K Swing JPanel auf gezeichnete Fläche legen AWT, Swing, JavaFX & SWT 4
S Fläche mit einzelnen Bildern erstellen AWT, Swing, JavaFX & SWT 3
G Austausch der Center-Fläche AWT, Swing, JavaFX & SWT 3
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
B Jlist füllen AWT, Swing, JavaFX & SWT 4
T Bild in ein graphics füllen AWT, Swing, JavaFX & SWT 2
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
maximizer JavaFX Accordion mit eigenen TitledPanes füllen AWT, Swing, JavaFX & SWT 0
W TableView füllen AWT, Swing, JavaFX & SWT 18
P JavaFx - Progressbar - Füllen mittels mehreren Tasks AWT, Swing, JavaFX & SWT 0
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
G JTable füllen AWT, Swing, JavaFX & SWT 1
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
K Swing JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 4
N JavaFX Füllen von ausgewählten Pfadelementen AWT, Swing, JavaFX & SWT 1
D Textfield bei starten füllen. AWT, Swing, JavaFX & SWT 5
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
D Graphics2D einen Bereich füllen AWT, Swing, JavaFX & SWT 1
O Swing JTable per Scrollen füllen! AWT, Swing, JavaFX & SWT 7
H Quadrate dnamisch erzeugen und beliebig füllen AWT, Swing, JavaFX & SWT 7
C Swing ImageIcon mit Bild aus Temp-Verzeichniss füllen AWT, Swing, JavaFX & SWT 15
J JEditorPane mit HTML füllen AWT, Swing, JavaFX & SWT 2
O JComboBox mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
1 Liste mit Objekten Füllen AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Datenbank füllen AWT, Swing, JavaFX & SWT 16
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
H JTable von anderer Klasse aus füllen AWT, Swing, JavaFX & SWT 6
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
S JComboBox mit Ergebnis einer SQL Abfrage füllen AWT, Swing, JavaFX & SWT 39
X JTable mit verschiedenen Objekten füllen AWT, Swing, JavaFX & SWT 14
C JFrame - Löschen und neu füllen AWT, Swing, JavaFX & SWT 9
C JList mit Vector füllen AWT, Swing, JavaFX & SWT 3
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
A Swing JTable spaltenweise füllen AWT, Swing, JavaFX & SWT 3
R Excpetion füllen/entleeren von JTable AWT, Swing, JavaFX & SWT 6
E Swing JLabel mit unicode füllen AWT, Swing, JavaFX & SWT 7
B JTabbedPane mit Enumeration dynamisch füllen AWT, Swing, JavaFX & SWT 5
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
M Liste mittels SwingWorker füllen klappt nicht AWT, Swing, JavaFX & SWT 10
M GridBagLayout zeilenweise füllen AWT, Swing, JavaFX & SWT 5
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
E JCombobox mit Daten aus DB füllen AWT, Swing, JavaFX & SWT 9
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
L JTree Selektion "füllen" AWT, Swing, JavaFX & SWT 4
N Textfeld füllen sobald es den Fokus verliert AWT, Swing, JavaFX & SWT 2
U JTable mit Daten aus einer HashMap füllen AWT, Swing, JavaFX & SWT 8
S JTree mit Daten aus Model füllen, eigenes TreeModel (gute Dokumentation des Problems) AWT, Swing, JavaFX & SWT 2
C JList: Eintrag anklicken & JTextfield mit Text aus MySQL füllen? (Screenshot dabei) AWT, Swing, JavaFX & SWT 8
F JList füllen mit LinkedList-Elementen AWT, Swing, JavaFX & SWT 21
Spot84 jtable mit checkboxnode dynamisch per arraylist füllen AWT, Swing, JavaFX & SWT 8
J jTabbedPane mit jPanel füllen AWT, Swing, JavaFX & SWT 14
N Gridlayout 2. Spalte füllen AWT, Swing, JavaFX & SWT 4
M jLabel mit Bild füllen? AWT, Swing, JavaFX & SWT 7
B Einfaches JScrollPane mit Bildern füllen AWT, Swing, JavaFX & SWT 2
ABstraCT JCombobox dynamisch füllen (erstes Element Problem) AWT, Swing, JavaFX & SWT 4
G Jpanel mit Hintergrundbild füllen? AWT, Swing, JavaFX & SWT 6
G jTable, spezille Zelle automatisch füllen AWT, Swing, JavaFX & SWT 13
P JTable/Model füllen mit Fortschrittsbalken, Var. Rückgabetyp AWT, Swing, JavaFX & SWT 2
M JList: wie füllen? AWT, Swing, JavaFX & SWT 2
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
G jList mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
G JTable aus Datenbank füllen AWT, Swing, JavaFX & SWT 4
J Dynamisches füllen von GridBagLayout: Größe der Komponenten AWT, Swing, JavaFX & SWT 4
G JTable Zeile mit Farbe füllen AWT, Swing, JavaFX & SWT 2
B Bild(pixel) füllen AWT, Swing, JavaFX & SWT 6
S JTree mit eigenen Objekten füllen AWT, Swing, JavaFX & SWT 4
A Beim Füllen von JList entsteht ein komisches Phänomen AWT, Swing, JavaFX & SWT 3
G Jtable mittels Liste füllen AWT, Swing, JavaFX & SWT 3
A JListe mit Daten füllen AWT, Swing, JavaFX & SWT 3
A Textfeld nach ereigniss füllen AWT, Swing, JavaFX & SWT 7
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4
D mit swt.virtual mehrspaltige tabellen füllen AWT, Swing, JavaFX & SWT 3
R Komponente (Frame) in anderer Klasse füllen AWT, Swing, JavaFX & SWT 18
A JTable mit MySQL Datenbank füllen AWT, Swing, JavaFX & SWT 12
H JComboBox mit den Daten eines Vectors füllen ? AWT, Swing, JavaFX & SWT 7
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
H JTree nach instanzierung füllen AWT, Swing, JavaFX & SWT 4
H Probleme JTable zu füllen AWT, Swing, JavaFX & SWT 4
D SWT-GUI von aussen füllen (Multi Threaded) AWT, Swing, JavaFX & SWT 2
J JTable-Zeilen mit Werten füllen AWT, Swing, JavaFX & SWT 7
G Probleme beim Füllen einer JTable AWT, Swing, JavaFX & SWT 2
G JList mit Daten füllen wie die normale DOS-Konsole AWT, Swing, JavaFX & SWT 2
M JComboBox aus Datenbank mit 2 Werten füllen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben