Je veux dessiner une ombre autour d'une miniature dans mon logiciel. Il semble que CreateHatchBrush peut aider mais je ne sais pas comment l'utiliser, quelqu'un peut-il me fournir un échantillon en C++? Merci beaucoup!Quelqu'un peut-il me fournir un exemple d'utilisation de CreateHatchBrush?
0
A
Répondre
0
L'option la plus simple serait d'utiliser GDI+ pour ce faire. Voici un exemple de rendu d'ombre rapide et sale:
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);
}
Espérons que cela aide!
0
Je n'ai pas d'exemple, mais quelques conseils sur l'utilisation générale des pinceaux dans Windows.
CreateHatchBrush()
renvoie un handle. Vous devez utiliser cette poignée pour faire en sorte que le pinceau actuel soit brossé dans le contexte de périphérique que vous utilisez pour le rendu. Appelez la fonction (plaine de Windows GDI appelle la version) du contexte de périphérique SetObject
:
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);