MFC - Picture control , CombineRgn

Signaler
Messages postés
190
Date d'inscription
dimanche 17 avril 2005
Statut
Membre
Dernière intervention
18 mars 2009
-
Messages postés
190
Date d'inscription
dimanche 17 avril 2005
Statut
Membre
Dernière intervention
18 mars 2009
-
bonjour tout le monde,

j'aimerai que la forme de ma dialog prendre la forme de la photo qui se trouve dans picture control

voici mon code :
//declaration en haut :
// HRGN LineRegion,FullRegion;
// int x,y;
RECT rect1,rect2;
BOOL InFirstRegion TRUE, InLine FALSE;




m_picture.GetWindowRect(&rect1);
AfxGetMainWnd()->GetWindowRect(&rect2);

rect2.left = rect1.left;
rect2.top = rect1.top;

HDC hdc = m_picture.GetDC()->GetSafeHdc();

int StartLineX = 0;
//////////////////////////////
/////////////////////////////
//partie de faire transparence
////////////////////////////
///////////////////////////
for(y=0;y

1 réponse

Messages postés
190
Date d'inscription
dimanche 17 avril 2005
Statut
Membre
Dernière intervention
18 mars 2009

bonjour tout le monde,

j'aimerai que la forme de ma dialog prendre la forme de la photo qui se trouve dans picture control

voici mon code :
//declaration en haut :
// HRGN LineRegion,FullRegion;
// int x,y;
RECT rect1,rect2;
BOOL InFirstRegion TRUE, InLine FALSE;




m_picture.GetWindowRect(&rect1);
AfxGetMainWnd()->GetWindowRect(&rect2);

rect2.left = rect1.left;
rect2.top = rect1.top;

HDC hdc = m_picture.GetDC()->GetSafeHdc();

int StartLineX = 0;
//////////////////////////////
/////////////////////////////
//partie de faire transparence
////////////////////////////
///////////////////////////
for(y=0;y<rect1.bottom;y++)// for 1
{
for(x=0;x<rect1.right;x++) // for 2
{

if(GetPixel(hdc,x,y) == RGB(255,0,255))
{

if(InLine)
{
InLine = FALSE;
LineRegion = CreateRectRgn(StartLineX,y,x,y+1);
if(InFirstRegion)
{
FullRegion = LineRegion;
InFirstRegion = FALSE;
}
else
{
CombineRgn(FullRegion,FullRegion,LineRegion,RGN_OR);
DeleteObject(LineRegion);
}

}

}
else
{

if(!InLine)
{
InLine = TRUE;
StartLineX = x;
}
}

}//fin for 2
}//fin for 1

SetWindowRgn(FullRegion,TRUE);
//m_picture est le nom variable de picture control;


bizzarement il se passe rien !!
sous VB6 ce code marche tres bien, je pense que j'ai rate quelque chose, quelqu'un a une idée ?

j'ai trouve cette source :
http://www.codeproject.com/KB/dialog...?display=Print
mais le code est long tres tres long , 60000 classes pour faire un truc simple qui marche facilement sous VB :/