String teilweise in Farbe zeichnen

Moin,

ich möchte gerne einen String ab einer bestimmten Position und dann bis zu einer bestimmten Position in einer anderen Farbe zeichnen.

Also z.B von den Koordinaten (x1:400|y1:220 -> x2:610|y2:265)

Ich habe es schon mit GradientPaint probiert, aber es macht nicht das was ich will … da GradientPaint
schon die Farbe bis x1/y1 zeichnet und da keine Lücke lässt.

So soll es aussehen! Ich denke mal GradientPaint ist dafür nicht geeignet.

So habe ich es mit GradiendPaint gemacht


          Graphics2D g2 = (Graphics2D) g;
 
          // Andere Sachen..

          GradientPaint gp = new GradientPaint(400, 220,Color.BLACK, 610, 265,
          Color.WHITE);
          g2.setPaint(gp);
          g2.drawString("Irgendein Text", 400, 245);

}```


Wie kann ich sowas zeichnen?

Wenn man das ganze zuerst auf ein Image zeichnet und anschließend nur das Image in der Komponente zeichnen lässt, kann man den Text mittels Composites mit beliebigen Farben, Mustern, Bildern… überlagern.
Ein einfaches Beispiel:

	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	final BufferedImage img = new BufferedImage(350, 200, BufferedImage.TYPE_INT_ARGB);
	Graphics2D g = img.createGraphics();
	g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
	g.setFont(new Font("Arial Bold", Font.ITALIC, 40));
	g.setColor(Color.BLACK);
	g.drawString("Irgendein Text", 50, 100);
	
	AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.SRC_IN);
	g.setComposite(composite);
	g.setColor(Color.RED);
	g.fillRect(63, 90, 50, 20);
	g.fillOval(150, 75, 70, 20);
	g.dispose();

	JPanel panel = new JPanel() {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(img, 0, 0, null);
		}
	};
	frame.setBounds(0, 0, 350, 200);
	frame.add(panel);
	frame.setVisible(true);```

Danke klappt :slight_smile: