Я хочу нарисовать тень вокруг миниатюры в моем программном обеспечении. Кажется, CreateHatchBrush может помочь, но я не знаю, как его использовать, может ли кто-нибудь предоставить мне образец на C++? Большое спасибо!





У меня нет образца, но есть несколько советов по общему использованию кистей в 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);
Самый простой вариант - использовать для этого 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 );
}
Надеюсь это поможет!