我无法重现你的问题,请看下面的截图:
代码:
Graphics graphics(hdc);
SolidBrush solidBrush(Color(255, 255, 0, 0));
Point point1 = Point(0, 0);
Point point2 = Point(0, 10);
Point point3 = Point(10, 10);
Point point4 = Point(10, 0);
Point points[4] = {point1,point2,point3,point4};
graphics.FillPolygon(&solidBrush, points, 4);
如果您的代码有任何差异,请在问题中添加您的代码和屏幕截图。
更新:
我添加了一个新的截图来研究这个问题:
如果区域在 0 / 10 (1-9) 之内,则宽度/高度应为 9,如果包含 x、y 点,则宽度/高度应为 11(给定 0 / 10 (0-10))。
不,宽度和高度应为 10 像素。如果您的意思是DrawRectangle,则该区域应为 9x9 像素,不包括 1 像素笔。
如果您使用Rectangle,则区域应为 8x8 像素,不包括 1 像素笔。
测试代码:
Pen blackPen(Color(255, 0, 0, 0), 1); //1 pixel
g->DrawRectangle(&blackPen, 0, 24, 10, 10); //10x10
Rectangle(hdc, 0, 36, 10, 46); // 10x10
RECT rect;
rect.left = 0;
rect.top = 12;
rect.right = 10;
rect.bottom = 22;
FillRect(hdc, &rect, (HBRUSH)(COLOR_WINDOW + 3)); //10x10