JDK的drawRect(),实际绘制范围比宽度大一个像素

简介: JDK的drawRect(),实际绘制范围比宽度大一个像素

今天研究绘制页面边框,坐标、宽度都是对的,结果比WORD宽了一个像素。反复确认之后,忍不住怀疑:难道是JDK的绘制范围不同?


测试代码

package taishan;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class DrawRectFrame extends TFrame
{
  public DrawRectFrame()
  {
     this.getContentPane().setBackground(Color.WHITE);
     this.getContentPane().setLayout(null);
     setUndecorated(true);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
  }
  @Override
    public void paint(Graphics g)
    {
  super.paint(g);
  g.setColor(Color.RED);
  g.drawLine(0, 0, 20,  0);
  g.drawLine(0, 0,  0, 20);
  g.setColor(Color.BLUE);
  g.drawRect(5, 5, 10, 10);
    }
  public static void main(String[] args)
    {
  DrawRectFrame frame = new DrawRectFrame();
  frame.setSize(600, 400);
  frame.setLocation(100, 100);
  frame.setVisible(true);
    }
}


测试结果(放大到4倍)


image.png

结果分析

坐标是从(0, 0)开始的。如果从5绘制,那么实际上相当于6。


宽度10,是从起始坐标之后的像素开始算10。也就是从5开始,到15结束。明确的说:


不算起始点,占用宽度为10。


算上起始点,占用宽度为11。


实际使用

到了这里就明白了,按照给定宽度,确实是比预想的宽了一个像素。

目录
相关文章
|
4月前
|
计算机视觉 Python
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
OpenCV中线段、矩形、圆形、多边形的讲解与绘制实战(附Python源码)
46 0
|
4月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
44 0
|
6月前
|
计算机视觉
OpenCV-最小包围旋转矩形边框cv::minAreaRect
OpenCV-最小包围旋转矩形边框cv::minAreaRect
|
6月前
|
计算机视觉
OpenCV-绘制旋转矩形
OpenCV-绘制旋转矩形
|
12月前
|
XML 数据格式
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
【opencv3】滑动条调节RGB颜色阈值并输出滑动条的值
Core Animation - 如何来绘制三个圆角一个直角的矩形
Core Animation - 如何来绘制三个圆角一个直角的矩形
54 0
|
JavaScript
问题解决:百分比宽度页面缩放会变形
问题解决:百分比宽度页面缩放会变形
170 1
问题解决:百分比宽度页面缩放会变形
146.矩形区域的颜色填充
146.矩形区域的颜色填充
53 0
在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。
编写Java程序:在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色画出来的,可以是填充的或者不填充的。