我想制作一条直线并让它移动.我能够制作一条直线并移动直线,但是当我移动直线时箭头会移位
这是我的绘画方法
Line2D.Double line = new Line2D.Double(startX, startY, endX, endY);
g2d.draw(line);
tx.setToIdentity();
double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
tx.translate(line.x2, line.y2);
tx.rotate((angle - Math.PI / 2d));
Graphics2D gClone = (Graphics2D) g2d.create();
gClone.setTransform(tx);
Polygon arrowHead = new Polygon();
arrowHead.addPoint(0, 15);
arrowHead.addPoint(-15, -15);
arrowHead.addPoint(15, -15);
Area area = new Arear(arrowHead );
Area lineArea = new Area(line);
lineArea.subtract(area);
gClone.fill(area);
gClone.dispose();
Run Code Online (Sandbox Code Playgroud)
我已经改变了startx的值并在鼠标按下和endx时开始y并在鼠标拖动时启动
我想在JLabel上制作矩形并将该矩形转换为BufferedImage ......就像在paint shop中的图层一样... drafferedImage并调整大小......任何人都可以帮助
我做到了这一点,但它没有奏效
Rectangle2D rectangle2D;
BufferedImage bi = new BufferedImage(bimg.getWidth(), bimg.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D big = bi.createGraphics();
rectangle2D = new Rectangle2D.Float(eX, eY, sW, sH);
big.setStroke(new BasicStroke(5));
big.setColor(color);
shapePaint = new TexturePaint(bi, rectangle2D);
g2d.setPaint(shapePaint);
Run Code Online (Sandbox Code Playgroud)