任何人都可以为我提供使用CreateHatchBrush的示例

时间:2008-12-29 10:04:34

标签: c++ gdi thumbnails

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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 );
}

希望这有帮助!