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。


实际使用

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

目录
相关文章
|
7月前
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
2月前
|
API
(4)Qt中的位置和尺寸
本文介绍了Qt中用于处理位置和尺寸的四个核心类:QPoint、QLine、QSize和QRect,包括它们的常用API和一些基本使用示例。
55 0
(4)Qt中的位置和尺寸
|
7月前
|
计算机视觉
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字
97 0
|
7月前
[MFC] 将像素坐标点缩放,准确的画在所在控件的图片上
[MFC] 将像素坐标点缩放,准确的画在所在控件的图片上
105 0
|
计算机视觉
OpenCV-最小包围旋转矩形边框cv::minAreaRect
OpenCV-最小包围旋转矩形边框cv::minAreaRect
209 0
|
计算机视觉
OpenCV-绘制旋转矩形
OpenCV-绘制旋转矩形
188 0
|
JavaScript
问题解决:百分比宽度页面缩放会变形
问题解决:百分比宽度页面缩放会变形
236 1
问题解决:百分比宽度页面缩放会变形
|
计算机视觉
五、OpenCV绘制线、矩形、圆等基本几何形状
通过javaOpenCV中的Imgproc函数进行简单几何图形的绘制
137 0
五、OpenCV绘制线、矩形、圆等基本几何形状
|
存储
opencv3寻找最小包围矩形在图像中的应用-滚动条
1 #include 2 #include 3 #include 4 5 using namespace cv; 6 using namespace std; 7 8 int g_nMinThred = 128, g_nMaxThred = 255; 9 i...
1416 0