0

ソフトウェアでサムネイルの周りに影を描きたいです。CreateHatchBrush が役立つようですが、使用方法がわかりません。C++ のサンプルを提供してもらえますか? どうもありがとう!

4

2 に答える 2

0

最も簡単なオプションは、GDI+を使用してこれを行うことです。すばやくダーティなシャドウレンダリングのサンプルを次に示します。

void Render( HDC hdc )
{
    Graphics gr( hdc );
    Image image( L"sample.jpg" );
    const int SHADOW_OFFSET = 7;

    //
    // draw shadow
    //
    SolidBrush shadow( Color( 190, 190, 190 ) );
    Rect rc( 50, 50, image.GetWidth(), image.GetHeight() );
    rc.Offset( SHADOW_OFFSET, SHADOW_OFFSET );
    gr.FillRectangle( &shadow, rc );

    //
    // draw the image
    //
    gr.DrawImage( &image, 50, 50, image.GetWidth(), image.GetHeight() );

    //
    // draw a border
    //
    Pen border( Color( 0, 0, 0 ), 1 );
    rc.Offset( -SHADOW_OFFSET, -SHADOW_OFFSET );
    gr.DrawRectangle( &border, rc );
}

お役に立てれば!

于 2008-12-30T00:51:30.723 に答える
0

サンプルはありませんが、Windows でのブラシの一般的な使用法に関するヒントがいくつかあります。

CreateHatchBrush()ハンドルを返します。そのハンドルを使用して、レンダリングに使用しているデバイス コンテキストでそのブラシを現在のブラシにする必要があります。デバイス コンテキストのSetObject関数を呼び出します (プレーンな Windows GDI 呼び出しバージョン)。

HDC myDC = GetDC (hWnd); //pass your window handle here or NULL for the entire screen  
HBRUSH hatchBrush = CreateHatchBrush (HS_DIAGCROSS, RGB (255,128,0));  
HBRUSH oldBrush = SelectObject (myDC, hatchBrush);  
//draw something here  
SelectObject (myDC, oldBrush); //restore previous brush  
ReleaseDC (myDC);
于 2008-12-29T15:49:58.603 に答える