0
DrawBorderBox(55, 20, 200, 50, 4, fontBlack, pDevice );

void Menu::DrawBorderBox( int x, int y, int w, int h, int thickness, D3DCOLOR Colour, LPDIRECT3DDEVICE9 pDevice)
{
    //Top horiz line
    DrawFilledRect( x, y, w, thickness,  Colour, pDevice );
    //Left vertical line
    DrawFilledRect( x, y, thickness, h, Colour, pDevice );
    //right vertical line
    DrawFilledRect( (x + w), y, thickness, h, Colour, pDevice );
    //bottom horiz line
    DrawFilledRect( x, y + h, w+thickness, thickness, Colour, pDevice );
}

void Menu::DrawFilledRect(int x, int y, int w, int h, D3DCOLOR color, LPDIRECT3DDEVICE9 pDevice)
{
    //We create our rectangle to draw on screen
    D3DRECT BarRect = { x, y, x + w, y + h }; 
    //We clear that portion of the screen and display our rectangle
    pDevice->Clear(1, &BarRect, D3DCLEAR_TARGET | D3DCLEAR_TARGET, color, 0, 0);
}

输入的值在DrawBorderBox中使用BarRect,那么调用DrawFilledRect不使用所有参数?那么BarRect假设h吗?

所以我得到 (55,20) 点 1 和 (255,70) 点 2?但这说它画了 1 条线?我很困惑。

我认为厚度在 BarRect 中被用作 h ???我说的对吗?这意味着它实际上会覆盖原始正方形的 4 个像素?

4

1 回答 1

0

BorderRect 正在绘制 4 个矩形,它们勾勒出由两个点 (55,20) (255,70) 指定的矩形。似乎有问题的是 4 个矩形的端盖似乎没有正确排列。在 x、y、w 和 h 上应该有偏移,以便在较大的盒子内绘制所有 4 个矩形,或者它们应该被绘制得稍长一些并在盒子外面。

于 2012-06-03T15:51:00.763 回答