저는 Java에 익숙하지 않지만 사용자가 그리거나, 펜의 색상과 크기를 변경하거나, 그리기 영역을 지울 수있는 간단한 페인트 프로그램을 만들었습니다.페인트 프로그램의 펜 투명도에 문제가 있음
사용자가 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