почти каждый раз, когда я использую 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
для рисования кадра вокруг элемента управления )
Мой первый вопрос, решенный (как они ведут себя...), все еще остается вторым: почему они ведут себя таким образом?