Пиксельное поведение FillRectangle и DrawRectangle

почти каждый раз, когда я используюGraphics.DrawRectangle или жеGraphics.FillRectangle (int версии) Кажется, мне не хватает пикселей на правой и нижней границе прямоугольника, который я хочу нарисовать.

Каково точное определение того, какие пиксели заполняются

Graphics.FillRectangle(brush,x,y,width,height)

а также

Graphics.DrawRectangle(pen,x,y,width,height) // pen is one pixel width, i.e. width=0f

и есть ли логическое объяснение этому? (так что я, наконец, могу вспомнить поведение :) ...)

РЕДАКТИРОВАТЬ:

Используя изумительный Олег ЖукПопробуй GDI + приложение, я смог найти любопытную разницу междуFillRectangle а такжеDrawRectangle:

FillRectangle(brush,0,0,1,1) рисует одну точку в точке (0,0), что как-то понятно (это прямоугольник с шириной и высотой один после всех).

DrawRectangle(pen,0,0,1,1) с другой стороны рисует маленький прямоугольник размером 2 на 2 пикселя.

Такое же поведение показано для других комбинаций ширина / высота,DrawRectangle всегда расширяется на один пиксель влево и вниз (что немного раздражает, например, при использованииClientRectangle свойство рисовать рамку вокруг элемента управления)

Мой первый вопрос решен (как чтобы они вели себя ...) там еще остается второйЗачем они ведут себя так?

Ответы на вопрос(3)

Ваш ответ на вопрос