私は比較的新しいですが、ペンの色やサイズを変更したり、描画領域をクリアするための簡単なペイントプログラムを作成しました。ペイントプログラムのペンの透明度に問題があります
ユーザはJColorChooserオブジェクト 'c'から色を選択し、これはc.getColor()を介して 'selected' Color変数に渡されます。私は、選択された色の透明度を変更することができるようにしたいが、setColor(r、g、b、a)メソッドを使用できるようにColorからRGBに変換する方法があるかどうかはわかりません。私のコードは以下の通りです。私は本当に助けていただきありがとうございます!
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();
}
}
ありがとうございます!私はそれを働かせた! :) – Jonny1998
@ Jonny1998ニース!答えが助けられたら、それを受け入れられたものとしてマークすることができます:) – RaceYouAnytime