Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 粗线防止变形_Java_Swing_Graphics2d - Fatal编程技术网

Java 粗线防止变形

Java 粗线防止变形,java,swing,graphics2d,Java,Swing,Graphics2d,我创建了一个接口java.awt.geom.Shape的实现。它包含一系列路径,以PathIterator的形式绘制与门的形状。 现在我想在移动鼠标指针时移动此形状。这工作得很好,但当我想增加线的厚度,这停止工作。如果我不改变钢笔的厚度,这个效果很好。 当我把钢笔的宽度设为1时,它就工作了。但当我将其设置为10时,门的一部分似乎是从点(0,0)绘制的,因此平移不受影响。 这是门源: package pashe; import java.awt.Rectangle; import java.awt

我创建了一个接口java.awt.geom.Shape的实现。它包含一系列路径,以PathIterator的形式绘制与门的形状。 现在我想在移动鼠标指针时移动此形状。这工作得很好,但当我想增加线的厚度,这停止工作。如果我不改变钢笔的厚度,这个效果很好。 当我把钢笔的宽度设为1时,它就工作了。但当我将其设置为10时,门的一部分似乎是从点(0,0)绘制的,因此平移不受影响。 这是门源:

package pashe;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.PathIterator;
import java.awt.geom.Point2D;

import java.awt.geom.Rectangle2D;

public class Gate implements Shape {

    GPathIterator pathIterator;
    public Gate(){

        pathIterator = new GPathIterator();
    }
    @Override
    public boolean contains(Point2D arg0) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean contains(Rectangle2D arg0) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean contains(double arg0, double arg1) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean contains(double arg0, double arg1, double arg2, double arg3) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Rectangle getBounds() {
        // TODO Auto-generated method stub
        return new Rectangle(0,0,50,30);
    }

    @Override
    public Rectangle2D getBounds2D() {
        // TODO Auto-generated method stub
        return (new Rectangle(0,0,50,30));
    }

    @Override
    public PathIterator getPathIterator(AffineTransform arg0) {
    return pathIterator;

    }

    @Override
    public PathIterator getPathIterator(AffineTransform arg0, double arg1) {
        // TODO Auto-generated method stub
        return pathIterator;
    }

    @Override
    public boolean intersects(Rectangle2D arg0) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean intersects(double arg0, double arg1, double arg2, double arg3) {
        // TODO Auto-generated method stub
        return false;
    }


}


有关更多信息,请使用以下-阅读图形2D:

    g2d.setStroke(stroke);
    g2d.transform(trans);
    Shape shape2 = stroke.createStrokedShape(shape);
    g2d.draw(shape2);

干得好

有关更多信息,请使用以下-阅读图形2d:

    g2d.setStroke(stroke);
    g2d.transform(trans);
    Shape shape2 = stroke.createStrokedShape(shape);
    g2d.draw(shape2);

干得好

为了更快地获得更好的帮助,请发布一个or。在将类合并到单个源代码之前,您可能要做的第一件事是删除20行左右的注释代码!顺便说一句-在
JPanel中覆盖
paintComponent(Graphics)
比在
JFrame
中覆盖
paintComponent(Graphics)
更好。要更快获得更好的帮助,请发布或。在将类合并到单个源代码之前,您可能要做的第一件事是删除20行左右的注释代码!顺便说一句-在
JPanel中覆盖
paintComponent(Graphics)
比在
JFrame中覆盖
paintComponent(Graphics)
更好。。
    g2d.setStroke(stroke);
    g2d.transform(trans);
    Shape shape2 = stroke.createStrokedShape(shape);
    g2d.draw(shape2);