- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试绘制一个笔划为 1 像素的多边形。因为整个多边形被缩放了 100,所以我将线宽设置为 0.01。但出于某种原因,绘制多边形时屏幕上的线宽看起来是 100 像素而不是 1。
我使用 GeneralPath
作为多边形。如果我使用相同的方法绘制 Line2D
形状,确实会绘制出细线。
g2d.scale(100, 100);
g2d.setStroke(new BasicStroke(0.01f));
g2d.draw(theShape);
新信息:如果我删除 setStroke 线,我会正确地得到一条 2 像素的线,因为之前在 Graphics2D 对象上设置了 0.02f 的 BasicStroke。
这才是真正的setStroke线
g.setStroke(new BasicStroke((float) (1f / getRoot().scaleX)));
最佳答案
以下代码生成如下所示的输出。您的代码中的其他地方一定有错误。也许您在问题中省略了对 scale
的另一个调用:
import java.awt.*;
public class FrameTest {
public static void main(String[] args) throws InterruptedException {
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
f.add(new JComponent() {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
GeneralPath theShape = new GeneralPath();
theShape.moveTo(0, 0);
theShape.lineTo(2, 1);
theShape.lineTo(1, 0);
theShape.closePath();
g2d.scale(100, 100);
g2d.setStroke(new BasicStroke(0.01f));
g2d.draw(theShape);
}
});
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
关于java - 不能用Java2D画细线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974178/
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!