0

我想在我的软件中围绕缩略图绘制阴影。似乎 CreateHatchBrush 可以提供帮助,但我不知道如何使用它,任何人都可以提供 C++ 中的示例吗?非常感谢!

4

2 回答 2

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 回答
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 回答