Я не могу воспроизвести вашу проблему, см. Снимок экрана ниже:
Код:
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);
Если есть Если в вашем коде есть какие-либо отличия, добавьте свой код и снимок экрана в вопрос.
Обновлено:
Я добавляю новый снимок экрана, чтобы исследовать этот вопрос:
Ширина / высота должны быть 9, если область внутри 0/10 (1-9), или 11, если включены точки x, y, заданные 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