간단한 하이 라이터 프로그램을 만들고 싶습니다. 생각은 형광펜처럼 보일 수 있도록 이미지를 설정하여 커서를 변경하는 것입니다. 그리고 나서 커서를 움직이면 우리의 움직임과 함께 선을 따라갈 것입니다. 여기에있는 요구 사항은 투명 배경에 선을 그릴 수있는 것입니다 (완전히 투명하지는 않지만 약 55 % 정도).투명 프레임에 선 그리기
내 진행 상황은 지금까지 투명 배경으로 선을 그릴 수 있습니다. 그러나 선은 또한 투명합니다. 내 코드는 다음과 같습니다. 그리기를 시작하려면 왼쪽 버튼을 클릭하고 중지하려면 오른쪽 버튼을 클릭하고 색상을 변경하려면 스페이스 키를 누릅니다. 라인이 그려되기 전에 지연이 ...
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class FreehandExample extends JFrame implements MouseListener, MouseMotionListener, KeyListener {
private int counter = 0;
private int draw = 0;
private int red[] = {58,71,231,243,255};
private int green[] = {54,224,235,109,40};
private int blue[] = {241,95,61,52,40};
private Point start, end;
private Graphics gd;
public FreehandExample()
{
setUndecorated(true);
setBackground(new Color(255,0,0));
setSize(new Dimension(300,200));
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addKeyListener(this);
addMouseListener(this);
addMouseMotionListener(this);
setOpacity(0.55f);
setVisible(true);
}
public void mousePressed(MouseEvent e) {
start = new Point(e.getX(), e.getY());
}
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1) draw = 1;
if(e.getButton() == MouseEvent.BUTTON3) draw = 0;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {
gd = this.getGraphics();
if(draw==1){
end = new Point(e.getX(), e.getY());
gd.setColor(new Color(red[counter],green[counter],blue[counter]));
gd.drawLine(start.x, start.y, end.x, end.y);
start = end;
}
}
public static void main(String []args){
new FreehandExample();
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_SPACE) {
counter++;
if(counter>4) counter=0;
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
나는 픽셀 별 투명도의 개념을 시도 ...하지만 선 그리기 즉시 인출되지 않습니다. 그러나 실제로 프레임이 투명한 동안 선이 투명하지 않은 올바른 결과를 산출합니다. 누군가이 코드를 수정하여 요구 사항을 충족하도록 도울 수 있습니까? 감사합니다. .