FillRect 在某些情况下不起作用
FillRect doesn't work in some case
在我的代码中:
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:
This function includes the left and top borders, but excludes the right and bottom borders of the rectangle.
不知道有没有关系。
我确信所有协调都正常,HDC 和 HBRUSH 参数也是如此。
有什么想法吗?
好的伙计们,我得到了答案,显然 rect 是由 GetWindowRect 而不是 GetClientRect 检索的,这搞砸了所有的协调
在我的代码中:
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:
This function includes the left and top borders, but excludes the right and bottom borders of the rectangle.
不知道有没有关系。 我确信所有协调都正常,HDC 和 HBRUSH 参数也是如此。 有什么想法吗?
好的伙计们,我得到了答案,显然 rect 是由 GetWindowRect 而不是 GetClientRect 检索的,这搞砸了所有的协调