Bmp monochrome->couleur?
freehair
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
freehair Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
freehair Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à passer une image bitmap monochrome en couleur dans un programme cpp utilisant l'api windows GDI.
Si quelqu'un serai comment faire, ce serai vraiment magique.
Merci d'avance
PS:Si vous avez besoin de plus de détails, n'hésitez pas à demander...
Je cherche à passer une image bitmap monochrome en couleur dans un programme cpp utilisant l'api windows GDI.
Si quelqu'un serai comment faire, ce serai vraiment magique.
Merci d'avance
PS:Si vous avez besoin de plus de détails, n'hésitez pas à demander...
A voir également:
- Bmp monochrome->couleur?
- Excel cellule couleur si condition texte - Guide
- Boite a couleur - Télécharger - Divers Photo & Graphisme
- Somme si couleur - Guide
- Pipette couleur word ✓ - Forum Powerpoint
- Récupérer une couleur précise dans 'trame de fond/remplissage' - Forum Word
4 réponses
quel est ton souci exactement ?
je voi plusieurs source de problèmes dans un tel programme.
1- le codage d'ouverture et d'enregistrement de fichiers bmp ;
2- algorithme de transformation de l'image en couleur ;
3- problème de format : comment doivent se présentés les données en bmp couleur.
Dit nous dans quel but tu veux faire cette transformation aussi, qu'attends tu du résultat final.
je voi plusieurs source de problèmes dans un tel programme.
1- le codage d'ouverture et d'enregistrement de fichiers bmp ;
2- algorithme de transformation de l'image en couleur ;
3- problème de format : comment doivent se présentés les données en bmp couleur.
Dit nous dans quel but tu veux faire cette transformation aussi, qu'attends tu du résultat final.
En fait mon programme doit effectué un scan monochrome, puis je dois afficher des arcs de cercles, des rectangles, enfin bref plein de forme géométrique qui s'affiche en fonction d'une analyse.
Tout marche nickel sauf que je perd la couleur de l'image lors d'un rafraichissement de la fenêtre.
J'ai essayé avec une image scanner en couleur, ça marche impeccable mais des que je passe une image monochrome, je perd la couleur.
Mon code en gros :
void InitialiseImageMemoire()//Initialise le context mémoire avec l'image BMP du disque
{
hDC_Area = (HDC)PA_GetUpdateHDC();
hDC_Memory =CreateCompatibleDC(hDC_Area);
SetStretchBltMode(hDC_Memory,HALFTONE);
hBmp_Memory = (HBITMAP)LoadImage(NULL,"C:\\TEST4.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE+LR_CREATEDIBSECTION);
GetObject(hBmp_Memory, sizeof(BmpTmp), &BmpTmp);//BmpTmp->BITMAP
DrawState(hDC_Memory,NULL,NULL,(LPARAM)hBmp_Memory,0,0,0,0,0,DST_BITMAP);
SelectObject(hDC_Memory, hBmp_Memory);
bImageChargee = true;
}
void RedessineImageZone(PA_PluginParameters params)//Affiche l'image dans la fenêtre 4d et affiche les dessins effectués
{
if(bImageChargee)
{
ReleaseDC((HWND)PA_GetHWND(0L), hDC_Area);
ConvertPA_RectToRect( PA_GetAreaRect(params), &AreaRECT);
DrawState(hDC_Area,NULL,NULL,(LPARAM)&BmpTmp,0,0,0,0,0,DST_BITMAP+DSS_NORMAL);
SetStretchBltMode(hDC_Area,HALFTONE);
StretchBlt(hDC_Area, 0, 0, AreaRECT.right-AreaRECT.left, AreaRECT.bottom-AreaRECT.top, hDC_Memory, 0, 0, BmpTmp.bmWidth, BmpTmp.bmHeight,SRCCOPY);
if(bArcTracé==false)
{
DessineArc(RGB(255,0,0),10,250,0,100,true);
DessineCercle(RGB(0,255,0),10,50,true);
DessineCercle(RGB(145,212,56),10,300,true);
POINT hg,bd;
hg.x = 50;
hg.y = 200;
bd.x= 300;
bd.y= 50;
DessineRect(RGB(56,210,124),10,hg,bd,false);
int i,j;
for(i=(AreaRECT.left+AreaRECT.right)/2-2;i<=(AreaRECT.left+AreaRECT.right)/2+2;i++)
{
for (j=(AreaRECT.bottom+AreaRECT.top)/2-2;j<=(AreaRECT.bottom+AreaRECT.top)/2+2;j++)
{
ChangePixel(RGB(250,0,250),i,j);
}
}
StretchBlt(hDC_Memory, 0, 0, AreaRECT.right-AreaRECT.left, AreaRECT.bottom-AreaRECT.top, hDC_Area , 0, 0, BmpTmp.bmWidth, BmpTmp.bmHeight,SRCCOPY);
bArcTracé=true;
}
}
}
Merci d'avoir répondu aussi rapidement
Tout marche nickel sauf que je perd la couleur de l'image lors d'un rafraichissement de la fenêtre.
J'ai essayé avec une image scanner en couleur, ça marche impeccable mais des que je passe une image monochrome, je perd la couleur.
Mon code en gros :
void InitialiseImageMemoire()//Initialise le context mémoire avec l'image BMP du disque
{
hDC_Area = (HDC)PA_GetUpdateHDC();
hDC_Memory =CreateCompatibleDC(hDC_Area);
SetStretchBltMode(hDC_Memory,HALFTONE);
hBmp_Memory = (HBITMAP)LoadImage(NULL,"C:\\TEST4.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE+LR_CREATEDIBSECTION);
GetObject(hBmp_Memory, sizeof(BmpTmp), &BmpTmp);//BmpTmp->BITMAP
DrawState(hDC_Memory,NULL,NULL,(LPARAM)hBmp_Memory,0,0,0,0,0,DST_BITMAP);
SelectObject(hDC_Memory, hBmp_Memory);
bImageChargee = true;
}
void RedessineImageZone(PA_PluginParameters params)//Affiche l'image dans la fenêtre 4d et affiche les dessins effectués
{
if(bImageChargee)
{
ReleaseDC((HWND)PA_GetHWND(0L), hDC_Area);
ConvertPA_RectToRect( PA_GetAreaRect(params), &AreaRECT);
DrawState(hDC_Area,NULL,NULL,(LPARAM)&BmpTmp,0,0,0,0,0,DST_BITMAP+DSS_NORMAL);
SetStretchBltMode(hDC_Area,HALFTONE);
StretchBlt(hDC_Area, 0, 0, AreaRECT.right-AreaRECT.left, AreaRECT.bottom-AreaRECT.top, hDC_Memory, 0, 0, BmpTmp.bmWidth, BmpTmp.bmHeight,SRCCOPY);
if(bArcTracé==false)
{
DessineArc(RGB(255,0,0),10,250,0,100,true);
DessineCercle(RGB(0,255,0),10,50,true);
DessineCercle(RGB(145,212,56),10,300,true);
POINT hg,bd;
hg.x = 50;
hg.y = 200;
bd.x= 300;
bd.y= 50;
DessineRect(RGB(56,210,124),10,hg,bd,false);
int i,j;
for(i=(AreaRECT.left+AreaRECT.right)/2-2;i<=(AreaRECT.left+AreaRECT.right)/2+2;i++)
{
for (j=(AreaRECT.bottom+AreaRECT.top)/2-2;j<=(AreaRECT.bottom+AreaRECT.top)/2+2;j++)
{
ChangePixel(RGB(250,0,250),i,j);
}
}
StretchBlt(hDC_Memory, 0, 0, AreaRECT.right-AreaRECT.left, AreaRECT.bottom-AreaRECT.top, hDC_Area , 0, 0, BmpTmp.bmWidth, BmpTmp.bmHeight,SRCCOPY);
bArcTracé=true;
}
}
}
Merci d'avoir répondu aussi rapidement
OK, au moins maintenant le problème est bien posé.
Je ne comprends rien à la programmation graphique de windows.
Il y a des chances pour qu'à un moment onné tu passe en argument les propriété des ton bmp N&B, et que du coup il bascule l'affichage en mode monochromatique.
Je ne comprends rien à la programmation graphique de windows.
Il y a des chances pour qu'à un moment onné tu passe en argument les propriété des ton bmp N&B, et que du coup il bascule l'affichage en mode monochromatique.
ben en fait, je vois pas du tout ou, j'ai essayé en changeant juste le chemin d'acces dans la commande
hBmp_Memory = (HBITMAP)LoadImage(NULL,"C:\\TEST4.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE+LR_CREATEDIBSECTION);
pour y mettre le chemin d'acces de la même image que j'avai passé en couleur sous paint et là ça marche nickel.
En tout cas que tu t'y connaisse ou pas merci d'avoir répondu et d'avoir essayé
hBmp_Memory = (HBITMAP)LoadImage(NULL,"C:\\TEST4.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE+LR_CREATEDIBSECTION);
pour y mettre le chemin d'acces de la même image que j'avai passé en couleur sous paint et là ça marche nickel.
En tout cas que tu t'y connaisse ou pas merci d'avoir répondu et d'avoir essayé