FillRect не работает в некоторых случаях

0

в моем коде:

void Surface::paintBorders(const Color& color, int borderWidth){
HBRUSH colorBrush = CreateSolidBrush(color.getRGB());
RECT border;

//Top Border:
border.top = 0;
border.bottom = borderWidth;
border.left = 0;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Bottom border
border.top = mRect.bottom - mRect.top - borderWidth;
border.bottom = mRect.bottom - mRect.top;
border.left = 0;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Right border
border.top = 0;
border.bottom = mRect.bottom - mRect.top;
border.left = mRect.right - mRect.left - borderWidth;
border.right = mRect.right - mRect.left;
FillRect(mHDC, &border, colorBrush);

//Left border
border.top = 0;
border.bottom = mRect.bottom - mRect.top;
border.left = 0;
border.right = borderWidth;
FillRect(mHDC, &border, colorBrush);

DeleteObject(colorBrush);

}

окрашиваются только верхняя и левая границы, нижняя и правая - нет. Я цитирую из MSDN:

Эта функция включает левую и верхнюю границы, но исключает правую и нижнюю границы прямоугольника.

Я не знаю, связано это или нет. Я точно знаю, что все координаты в порядке, также параметры HDC и HBRUSH. есть идеи?

  • 0
    Очевидно, что ваши расчеты немного ошибочны. Попробуйте переместить вправо, нижние границы влево и вверх.
  • 2
    Вы показали только часть кода. Мы можем только догадываться о специфике. Почему бы не показать полную программу?
Теги:
user-interface
winapi
window

1 ответ

1
Лучший ответ

ОК, ребята, я получил ответ, очевидно, был получен GetWindowRect вместо GetClientRect, который испортил все координаты

  • 2
    Вы должны удалить вопрос. Для будущих посетителей нет никакой ценности, и в этом вопросе ничего не говорится о GetWindowRect или GetClientRect.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню