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 は、2 つの点 (55,20) (255,70) で指定された四角形の輪郭を描く 4 つの四角形を描画しています。間違っているように見えるのは、4 つの長方形のエンドキャップが正しく並んでいないように見えることです。x、y、w、および h にオフセットを設定して、4 つの長方形すべてを大きなボックスの内側に描画するか、ボックスの外側に少し長く描画する必要があります。

于 2012-06-03T15:51:00.763 に答える