Ich bin relativ neu in Java, aber ich habe ein einfaches Malprogramm erstellt, mit dem der Benutzer zeichnen, die Farbe und Größe des Stiftes ändern und den Zeichenbereich löschen kann.Probleme mit der Stifttransparenz im Malprogramm
Der Benutzer wählt eine Farbe aus dem JColorChooser-Objekt 'c' aus, und diese wird über c.getColor() an die Color-Variable 'selected' übergeben. Ich möchte in der Lage sein, die Transparenz der ausgewählten Farbe zu ändern, aber ich weiß nicht, ob es eine Möglichkeit gibt, von Farbe in RGB zu konvertieren, so dass ich die Methode setColor (r, g, b, a) verwenden kann. Mein Code ist unten. Ich schätze jede Hilfe!
Color selected;
public class ColorTool extends JPanel {
public ColorTool() {
super(new BorderLayout());
b = new JLabel("Pen Color", JLabel.CENTER);
b.setForeground(Color.black);
c = new JColorChooser(b.getForeground());
c.getSelectionModel().addChangeListener(new ColorListener());
add(c, BorderLayout.PAGE_END);
}
}
public DrawPanel() {
setDoubleBuffered(false);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
for (int i = 0; i <= 100; i++) {
if (PS == i) {
oldX = (int)(e.getX() - Math.ceil(PS/2));
oldY = (int)(e.getY() - Math.ceil(PS/2));
if (graphics != null) {
graphics.setColor(selected);
graphics.fillOval(oldX, oldY, PS, PS);
}
repaint();
oldX = e.getX();
oldY = e.getY();
}
}
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
BasicStroke size = new BasicStroke(PS,
BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
currentX = e.getX();
currentY = e.getY();
if (graphics != null) {
graphics.setColor(selected);
graphics.setStroke(size);
graphics.drawLine(oldX, oldY, currentX, currentY);
}
repaint();
oldX = currentX;
oldY = currentY;
}
});
}
public class ColorListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
selected = c.getColor();
}
}
Vielen Dank! Ich habe es funktioniert! :) – Jonny1998
@ Jonny1998 Schön! Wenn die Antwort geholfen hat, kannst du es als akzeptiert markieren :) – RaceYouAnytime