gpt4 book ai didi

java - 在屏幕上绘制 8x8 矩形变成 9x9 矩形?

转载 作者:行者123 更新时间:2023-12-03 21:47:25 25 4
gpt4 key购买 nike

g2.fill(new Rectangle2D.Double(0, 0, 8, 8));

这很好地填充了一个 8x8 的矩形。

但是当我尝试绘制一个 8x8 的矩形边框时,奇怪的事情发生了:

g2.draw(new Rectangle2D.Double(0, 0, 8,8));

这会绘制一个 9x9 的矩形。

enter image description here

但是我指定应该是8宽8高。

我有一个默认的笔划宽度 1。

我是不是忽略了什么?也许更好的问题是:我可以关闭它以便在调用 draw 时得到一个 8x8 的矩形吗?

最佳答案

Graphics2D 的文档类,在标题为“渲染兼容性问题”的部分中,说:

The JDK(tm) 1.1 rendering model is based on a pixelization model that specifies that coordinates are infinitely thin, lying between the pixels. Drawing operations are performed using a one-pixel wide pen that fills the pixel below and to the right of the anchor point on the path. The JDK 1.1 rendering model is consistent with the capabilities of most of the existing class of platform renderers that need to resolve integer coordinates to a discrete pen that must fall completely on a specified number of pixels.

接着说:

Java 2D API maintains compatibility with JDK 1.1 rendering behavior, such that legacy operations and existing renderer behavior is unchanged under Java 2D API. Legacy methods that map onto general draw and fill methods are defined,

所以基本上,这意味着如果 Java 呈现从 (0,0)(0,8) 的直线,它将以像素 0 坐标下。从 (0,8) 到 (8,8) 的线将进入 8 x 坐标的右侧像素。

0┌───┬───┬───┬───┬───┬───┬───┬───┬───┐ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │1├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │2├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │3├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │4├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │5├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │6├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │7├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │   │   │   │   │   │   │   │ █ │8├───┼───┼───┼───┼───┼───┼───┼───┼───┤ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │ █ │ └───┴───┴───┴───┴───┴───┴───┴───┴───┘ 0   1   2   3   4   5   6   7   8      

因此,在 8x8 矩形周围使用 draw 会在矩形内部绘制两条线,在矩形外部绘制两条线。

关于java - 在屏幕上绘制 8x8 矩形变成 9x9 矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com