begin process at 2012 05 29 08:37:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

HBITMAP avec transparence


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

HBITMAP avec transparence

mercredi 21 avril 2004 à 10:41:41 | HBITMAP avec transparence

CyberP

Est ce que quelqu'un sait mettre en transparence une couleur d'un HBITMAP (en l'occurence RGB(255,0,255)) ?

J'ai cherché une demi heure dans le MSDN sans succès... (en tout cas rien pour une simple bitmap)

CyberP,
Celui qui dit que toute question a une réponse
mercredi 21 avril 2004 à 12:13:22 | Re : HBITMAP avec transparence

JCDjcd


bah en fait cela est possible.
Il suffit de faire BitBlit avec l'option non pas COPY mais AND ou XOR, et ta transparence doit etre de couleur noir

Bon en gros tu reflefhis un peut sur les oprerations logiques AND XOR OR ..., et ca devrai marche.
mercredi 21 avril 2004 à 13:06:26 | Re : HBITMAP avec transparence

CyberP

Je ne peux pas utiliser BitBlt parce que dans mon script, j'insère un HBITMAP dans un RichEdit... Je ne peux que modifier le HBITMAP avant de l'insérer

CyberP,
Celui qui dit que toute question a une réponse
mercredi 21 avril 2004 à 13:42:12 | Re : HBITMAP avec transparence

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Récupère la couleur de fond du richedit, et applique cette couleur à tes pixels de couleurs RGB(255,0,255)...

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
mercredi 21 avril 2004 à 13:45:26 | Re : HBITMAP avec transparence

CyberP

Oui j'ai déjà eu l'idée, mais je ne trouve rien non plus pour modifier la couleur (à moins de changer manuellement, mais je ne sais pas comment faire pour récupérer la taille ou les bits)

CyberP,
Celui qui dit que toute question a une réponse
mercredi 21 avril 2004 à 14:00:42 | Re : HBITMAP avec transparence

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Tu peux récupèrer le tableau de bits de l'image avec la fonction GetDIBits (à ce moment là, il faut créer au préalable un DC !) puis faire tes modifications dans ce tableau.

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
mercredi 21 avril 2004 à 14:36:02 | Re : HBITMAP avec transparence

CyberP

Merci, ca commence à marcher

CyberP,
Celui qui dit que toute question a une réponse
mercredi 21 avril 2004 à 18:35:07 | Re : HBITMAP avec transparence

CyberP

Non ca ne marche toujours pas...

Mon code est :


CBitmap tmpbmp;
tmpbmp.LoadBitmap(smile);
HBITMAP hBitmap = (HBITMAP)tmpbmp;
BITMAPINFO bitMapInfo;
GetDIBits(GetDC(), hBitmap, 0, 20, NULL, &bitMapInfo, DIB_RGB_COLORS);
int rred = bitMapInfo.bmiColors[0].rgbRed;
int ggreen = bitMapInfo.bmiColors[0].rgbGreen;
int bblue = bitMapInfo.bmiColors[0].rgbBlue;
for (int i = 0; i < 324/*bitMapInfo.bmiHeader.biHeight * bitMapInfo.bmiHeader.biWidth*/; i++) {
if (bitMapInfo.bmiColors[i].rgbRed == rred && bitMapInfo.bmiColors[i].rgbGreen == ggreen && bitMapInfo.bmiColors[i].rgbBlue == bblue) {
bitMapInfo.bmiColors[i].rgbRed = 0;//GetRValue(WinUtil::bgColor);
bitMapInfo.bmiColors[i].rgbGreen = 0;//GetGValue(WinUtil::bgColor);
bitMapInfo.bmiColors[i].rgbBlue = 128;//GetBValue(WinUtil::bgColor);
}
}
SetDIBits(GetDC(), hBitmap, 0, 20, NULL, &bitMapInfo, DIB_RGB_COLORS);
CImageDataObject::InsertBitmap(ctrlClient.GetOleInterface(), hBitmap);


les 3 premières lignes ainsi que la dernière "fonctionnent"
la couleur de fond est rgb(0,0,128)
là où j'ai mis des commentaires pour tester (normalement ce n'est pas des commentaires)
le GetDC() fonctionne car il y a un morceau de code planqué quelque part (je modifie un programme existant) qui fait que ca revienne à hWnd.GetDC()

CyberP,
Celui qui dit que toute question a une réponse
mercredi 21 avril 2004 à 18:50:05 | Re : HBITMAP avec transparence

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Il faut renseigner la taille de la structure BITMAPINFOHEADER :

bitmapinfo.bmiHeader.biSize = sizeof(bitmapinfo);

De même, il faut renseigner la hauteur et la largeur de ton bitmap dans ton bitmapinfo :
bitMapInfo.bmiHeader.biHeight et bitMapInfo.bmiHeader.biWidth

Enfin, je ne vois pas trop comment tu fais pour modifier tes bits comme cà... J'ai toujours récupèrer le tableau de bits du bitmap puis traiter ce tableau directement. Apparement, ce n'est pas ce que tu fais... je ne sais pas si on peux faire directement comme tu fais ! Il faudrait quelqu'un qui s'y connaissent mieux en C que moi, car mes connaissances sont bien faibles en C !

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
mercredi 21 avril 2004 à 19:35:50 | Re : HBITMAP avec transparence

CyberP

Oui mais le problème est que je ne sais pas comment récupérer la taille de mes bitmap (ils n'ont pas tous la même taille)

Sinon je trouve un peu idiot qu'il faille déjà "compléter les informations" alors qu'on récupère des données

CyberP,
Celui qui dit que toute question a une réponse

1 2 3

Cette discussion est classée dans : transparence, hbitmap


Répondre à ce message

Sujets en rapport avec ce message

transparence [ par crazy666 ] je vous explique le topo, j'ai fait une petite appli avec 1 boite de dial composée de 3 boutons.La boite de dialogue a une image en fond et les 3 bout Probleme de transparence [ par Sebaplus ] Salut, j'ai un problème avec la transparence: lorsque je regarde la face transparente à travers une face opaque, je la vois qu'en meme.Pourtant je des transparence qui ne marche pas sur toutes les machines [ par bouss ] J'utilise dans une application Directx7 des fonction de rendu par alphablending.Ces fonctionalités marchent très bien sur mon PC (une vielle bécane av Icone dégueulasse ! [ par Kephren ] Salut, je viens demander de l'aide. J'ai fait une toolbar dans mon prog, via les API sans MFC. Et je vais ensuite mettre les icones des boutons dedans transparence [ par trif ] J'ai une zone de type STATIC qui contient une image.je n'arrive pas a ecrire par dessus.j'ai essayé de superposer une autre zone STATIC qui contient l Bitmap [ par zainal ] Salut a vousbon voila, je voudrai afficher une bitmap dans une zone de static et j ai creer ce bout de code qui ne marche pas vous vous en douter !voi recuperation de la taille d'un HBITMAP [ par youpiyoyo ] pouvez vous m'aider a trouver la longueur et largeur d'un HBITMAPmerci d'avance youpi Win32, transparence des objets [ par _Jonathan ] salut, je cherche a rendre transparent le fond d'un composant "static"...merci d'avance Transparence d'une fenêtre [ par kami190182 ] est il possible en c++ de rendre une fenêtre transparente partiellement.Merci d'avance Transparence texture [ par lechabin ] Bonjour,J'affiche un texture sur un carré, et j'aimerai que seul la texture elle meme apparaissegenre j'applique une texture en croix, et je voudrai q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales