Bmp monochrome->couleur?
Fermé
freehair
Messages postés
3
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
21 février 2008
-
21 févr. 2008 à 09:47
freehair Messages postés 3 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 21 février 2008 - 21 févr. 2008 à 11:40
freehair Messages postés 3 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 21 février 2008 - 21 févr. 2008 à 11:40
A voir également:
- Bmp monochrome->couleur?
- Excel cellule couleur si condition texte - Guide
- Somme si couleur - Guide
- La boite a couleur - Télécharger - Divers Photo & Graphisme
- Pipette couleur word - Forum Microsoft Office
- Une image .bmp peut être animée. ✓ - Forum Graphisme
4 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
21 févr. 2008 à 10:36
21 févr. 2008 à 10:36
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.
freehair
Messages postés
3
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
21 février 2008
21 févr. 2008 à 10:51
21 févr. 2008 à 10:51
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
21 févr. 2008 à 11:33
21 févr. 2008 à 11:33
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.
freehair
Messages postés
3
Date d'inscription
mercredi 20 février 2008
Statut
Membre
Dernière intervention
21 février 2008
21 févr. 2008 à 11:40
21 févr. 2008 à 11:40
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é