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