gpt4 book ai didi

c# - System.Drawing.Graphics.DrawRectangle 绘制比指定大 1px 的矩形

转载 作者:行者123 更新时间:2023-11-30 15:28:11 24 4
gpt4 key购买 nike

这里的代码非常简单...只是在 OnPaint 例程中为 Form 绘制应该是 64x64 的矩形:

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawRectangle(Pens.Black, new Rectangle(32, 32, 64, 64));
}

我截取了以下屏幕截图,并测量了 65x65 的正方形。

enter image description here

只是想知道是什么导致额外的 1px 宽度/高度,以及如何解决?

编辑...

我知道我可以使用 Rectangle.Inflate(-1, -1) 修复...更重要的是,我想知道为什么 GDI/GDI+ 渲染矩形 1px 宽/高指定,并在此上下文中给出使用 Inflate 修复的原因。

最佳答案

每个边框边缘的中心绘制在矩形实际边缘的左侧或下方。对于单像素边框,顶部边缘和底部边缘绘制在矩形的实际边缘下方。如果您在表单顶部绘制这样一个矩形,则该矩形的顶部为 0,顶部边缘绘制在 0 像素和 1 像素之间的空间中。如果该矩形的高度为 64 像素,则 Bottom 为 64,底部边缘绘制在 64 像素和 65 像素之间。如果将笔的粗细设置为 2,那么您会发现底边的另一半绘制在 63 到 64 像素之间。垂直边缘也是如此,即第一个奇数像素向右绘制,偶数向左绘制。

关于c# - System.Drawing.Graphics.DrawRectangle 绘制比指定大 1px 的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26201289/

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