2008-12-29 9 views

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);