Java target=null; 重新油漆(); } } }); } 受保护路径2D生成路径(点p1、点p2、点p3){ path2dp=新的GeneralPath(); p、 moveTo(p1.getX(),p1.getY()); p、 曲线to(p1.get
target=null; 重新油漆(); } } }); } 受保护路径2D生成路径(点p1、点p2、点p3){ path2dp=新的GeneralPath(); p、 moveTo(p1.getX(),p1.getY()); p、 曲线to(p1.getX(),p1.getY(), p2.getX(),p2.getY(), p3.getX(),p3.getY(); 返回p; } @凌驾 公共维度getPreferredSize(){ 返回新维度(200200); } 受保护组件(图形g){ 超级组件(g); Graphics2D g2d=(Graphics2D)g.create(); g2d.setRenderingHint(RenderingHits.KEY\u ALPHA\u插值,RenderingHits.VALUE\u ALPHA\u插值\u质量); g2d.setRenderingHint(renderingHits.KEY\u抗锯齿,renderingHits.VALUE\u抗锯齿\u开启); g2d.setRenderingHint(RenderingHints.KEY\u COLOR\u RENDERING,RenderingHints.VALUE\u COLOR\u RENDER\u QUALITY); g2d.setRenderingHint(renderingHits.KEY\u抖动,renderingHits.VALUE\u抖动\u启用); g2d.setRenderingHint(renderingHits.KEY_分数矩阵,renderingHits.VALUE_分数矩阵开); g2d.setRenderingHint(RenderingHits.KEY\u插值,RenderingHits.VALUE\u插值\u双线性); g2d.setRenderingHint(renderingHits.KEY_RENDERING,renderingHits.VALUE_RENDER_QUALITY); g2d.setRenderingHint(renderingHits.KEY\u STROKE\u控件,renderingHits.VALUE\u STROKE\u PURE); g2d.setColor(Color.BLACK); 用于(形状:形状){ g2d.绘制(形状); } if(锚点!=null&&target!=null){ g2d.setColor(Color.GREEN); g2d.draw(新Line2D.Double(锚定,目标)); } if(fakePath!=null){ g2d.setColor(Color.BLUE); g2d.绘制(假路径); } g2d.dispose(); } } }Java target=null; 重新油漆(); } } }); } 受保护路径2D生成路径(点p1、点p2、点p3){ path2dp=新的GeneralPath(); p、 moveTo(p1.getX(),p1.getY()); p、 曲线to(p1.get,java,awt,graphics2d,Java,Awt,Graphics2d,target=null; 重新油漆(); } } }); } 受保护路径2D生成路径(点p1、点p2、点p3){ path2dp=新的GeneralPath(); p、 moveTo(p1.getX(),p1.getY()); p、 曲线to(p1.getX(),p1.getY(), p2.getX(),p2.getY(), p3.getX(),p3.getY(); 返回p; } @凌驾 公共维度getPreferredSize(){ 返回新维度(200200); } 受保护组件(图形g){ 超
@SarthakSachdeva很高兴它能帮上忙
public void mousePressed(MouseEvent e) {
xCoordinateInitial = e.getX(); //Initialize x-coordinate to the mouse x-coordinate
yCoordinateInitial = e.getY() + shiftInY; //Initialize y-coordinate to the mouse y-coordinate
System.out.println("X-coordinate: " + xCoordinateInitial);
System.out.println("Y-coordinate: " + yCoordinateInitial);
}
public void mouseReleased(MouseEvent e) {
Graphics2D G = (Graphics2D) getGraphics();
G.setStroke(new BasicStroke(lineThickness));
G.setColor(colorSelected);
G.setPaint(colorSelected);
xCoordinateFinal = e.getX(); //Set final x-coordinate to the mouse x-coordinate after drag
yCoordinateFinal = e.getY() + shiftInY; //Set final y-coordinate to the mouse y-coordinate after drag
int x = xCoordinateInitial;
int y = yCoordinateInitial;
int width = xCoordinateFinal - xCoordinateInitial; //Setting width
int height = yCoordinateFinal - yCoordinateInitial; //Setting height
if (yCoordinateFinal < yCoordinateInitial) {
y = yCoordinateFinal;
height = yCoordinateInitial - yCoordinateFinal;
}
if (xCoordinateFinal < xCoordinateInitial) {
x = xCoordinateFinal;
width = xCoordinateInitial - xCoordinateFinal;
}
// Shape Selection
switch (shapeSelected) {
case Line:
G.drawLine(xCoordinateInitial, yCoordinateInitial, xCoordinateFinal, yCoordinateFinal);
break;
case Rectangle:
G.fillRect(x, y, width, height);
break;
case Oval:
G.fillOval(x, y, width, height);
break;
case Curve :
// To implement
}
}
});
Path2D p = new GeneralPath();
p.moveTo(x1, y1);
p.curveTo(bx1, by1, bx2, by2, x2, y2);
G.draw(p);
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Path2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private boolean dragging = false;
private Point anchor;
private Point target;
private Shape fakePath;
private List<Shape> shapes = new ArrayList<>(25);
public TestPane() {
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
dragging = true;
target = new Point(e.getPoint());
repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
if (target != null && anchor != null) {
fakePath = makePath(anchor, e.getPoint(), target);
repaint();
}
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (anchor == null) {
target = null;
anchor = new Point(e.getPoint());
}
}
@Override
public void mouseReleased(MouseEvent e) {
dragging = false;
}
@Override
public void mouseClicked(MouseEvent e) {
if (anchor != null && target != null) {
fakePath = null;
shapes.add(makePath(anchor, e.getPoint(), target));
anchor = null;
target = null;
repaint();
}
}
});
}
protected Path2D makePath(Point p1, Point p2, Point p3) {
Path2D p = new GeneralPath();
p.moveTo(p1.getX(), p1.getY());
p.curveTo(p1.getX(), p1.getY(),
p2.getX(), p2.getY(),
p3.getX(), p3.getY());
return p;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
g2d.setColor(Color.BLACK);
for (Shape shape : shapes) {
g2d.draw(shape);
}
if (anchor != null && target != null) {
g2d.setColor(Color.GREEN);
g2d.draw(new Line2D.Double(anchor, target));
}
if (fakePath != null) {
g2d.setColor(Color.BLUE);
g2d.draw(fakePath);
}
g2d.dispose();
}
}
}