使用函数的所有参数?我糊涂了

时间:2012-06-03 15:26:27

标签: c++

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?但是这说它画了一条线?我很困惑。

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

1 个答案:

答案 0 :(得分:0)

BorderRect绘制4个矩形,勾勒出由两个点(55,20)(255,70)指定的矩形。似乎错误的是4个矩形上的端盖似乎没有正确排列。在x,y,w和h上应该有偏移,要么在较大的框内绘制所有4个矩形,要么在框外稍长一些矩形。