Accueil > Forum > > > > [api] Image qui s'efface
[api] Image qui s'efface
samedi 5 novembre 2005 à 19:55:45 |
[api] Image qui s'efface

hoGan
|
Bonjour, voilà ce que je voudrais faire: lorsque j'appuie sur un bouton, faire apparaître une image, et faire en sorte que celle-ci ne disparaisse pas dès que j'abaisse la fenêtre ! Est-ce que je me fais bien comprendre? :P Alors, je sais que l'image ne disparaît pas si on l'affiche quand on reçoit le message WM_PAINT, mais je ne vois pas comment coupler WM_PAINT et WM_COMMAND (rappelez-vous, je veux cliquer sur un bouton avant) Une recherche sur ce forum m'a indiqué ceci, un message de "BruNews" qui date de deux ans, mais c'est du charabia total ^^ : " avant creation et affichage du dialoxbox, tu copies l'image dans un memDC et c'est dedans que tu crees l'image resultante. Traite affichage de fenetre par un simple BitBlt depuis memDC vers DC de fenetre, sera hyper rapide." Qui peut traduire? Merci
|
|
dimanche 6 novembre 2005 à 00:27:13 |
Re : [api] Image qui s'efface

chris91
|
salut, traduction : c'est la technique du back buffer
quand une zone non visible est de nouveau visible, un message WM_PAINT est envoyé pour redessiner cette zone.
deux choix :
1- toutes les opérations dans WM_PAINT et si c'est long, l'affichage est pas top
2- création et dessin d'un back buffer, qui est un DC mémoire, en dehors du message WM_PAINT et WM_PAINT intégre uniquement un BitBlt du DCmem vers DC
pour l'histoire de l'image et du bouton, back buffer ou pas, c'est une variable BOOL qu'il faut, soit static dans WndProc, soit globale
static BOOL bButton;
avec WM_COMMAND : si bButton égal TRUE, bButton = FALSE sinon bButton = TRUE on met à jour l'affichage
avec WM_PAINT : si bButton égal TRUE création d'un DCmem pour copie du bmp ou BitBlt d'un DCmem éxistant vers DC si technique back buffer
pour le back buffer, un peu de code ici : http://www.cppfrance.com/forum.v2.aspx?ID=592514 et mon source : http://www.cppfrance.com/code.aspx?ID=34308 bye.
|
|
dimanche 6 novembre 2005 à 13:07:51 |
Re : [api] Image qui s'efface

hoGan
|
Salut est-ce que tu pourrais un peu détailler l'utilisation des hdc, hdcMem? Juste expliquer le principe en français, pas forcément refaire tout le code. Parce que j'ai été voir les liens indiqués et ai essayé de les adapter à ce que je voulais faire, sans résultat :::
|
|
dimanche 6 novembre 2005 à 18:39:46 |
Re : [api] Image qui s'efface

chris91
|
salut, c'est plus un problème de bmp et de bouton ça...
DC = Device Context
définition traduite de MSDN: "Un contexte de périphérique est une structure qui définit un jeu d'objets graphiques et leurs attributs associés".
si on souhaite dessiner un bmp sur la fenêtre de l'application: 1- on obtiens un handle du DC de la fenêtre de l'application 2- on obtiens un handle de DC compatible avec le DC précédent 3- on sélectionne l'objet BITMAP dans le DC compatible 4- BitBlt entre le DC compatible et le DC de la fenêtre de l'application 5- destruction de l'objet BITMAP et fermeture des DCs
dans le technique du back buffer, on commence de la même manière, sauf que l'on ne fais pas de BitBlt et on ferme uniquement le DC de la fenêtre de l'application.
donc il nous reste un DC avec un bmp sélectionné... c'est notre DCmem, notre back buffer, et il est possible d'en avoir plusieurs.
ensuite, dans WM_PAINT avec BeginPaint on obtiens un handle (hDc) du DC de la fenêtre de l'application, donc forcément compatible avec notre ou nos DCmems.
1- si l'application a une image de fond, BitBlt du hDcBackPicture vers hDc, 2- si bButton est TRUE BitBlt du hDcBmp vers hDc si hButton est FALSE, il y aura seulement un BitBlt de l'image de fond (si image de fond il y a)
chapitre 5 : The Device Context chapitre 14 : Bitmaps and Bitblts et tout le reste !! CP5 & CP5sources http://brunews.free.fr/brunews/index.htm bye.
|
|
lundi 7 novembre 2005 à 01:22:01 |
Re : [api] Image qui s'efface

chris91
|
mince, évidemment c'est "on obtient", au départ c'était "tu obtiens"...bref...
|
|
lundi 7 novembre 2005 à 20:09:49 |
Re : [api] Image qui s'efface

hoGan
|
Salut Chris, merci beaucoup de t'intéresser à mon cas Alors j'ai effectivement maintenant un problème de bouton, bien que je pense voir où tu veux en venir avec ton histoire de bool: - créer une variable globale booléenne bButton, qui servira de "marqueur" - lorsqu'on reçoit WM_COMMAND(c'est-à-dire lorsqu'on clique sur le bouton), traiter l'état de bButton (TRUE ou FALSE - c'est ici que je coince, je vais y venir plus loin) - dans le WM_PAINT, faire: if(bButton == TRUE) //le bouton est cliqué { BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, MERGECOPY); } Bon, j'espère ne pas déjà me tromper jusqu'ici (dis-le moi si c'est le cas)...mais je n'arrive pas à comprendre comment traiter bButton... tu avais écrit: "avec WM_COMMAND : si bButton égal TRUE, bButton = FALSE sinon bButton = TRUE" alors si je retranscris : case WM_COMMAND: //... case ID_BOUTON: //le bouton en question if(bButton == TRUE) { bButton = FALSE; } else { bButton = TRUE; } Pour moi, ça ne rime à rien ... Merci d'éclairer ma lanterne
|
|
mardi 8 novembre 2005 à 01:39:06 |
Re : [api] Image qui s'efface

chris91
|
Réponse acceptée !
salut,
donc on change l'état de bButton à chaque WM_COMMAND, puis on met à jour l'affichage avec InvalidateRect...
case WM_COMMAND:
case ID_BOUTON: if(bButton) bButton = FALSE; // if(bButoon == TRUE) else bButton = TRUE;
// TRUE ou FALSE, on met à jour l'affichage InvalidateRect(hwnd, NULL, FALSE); // WM_PAINT dans la file des messages // break; si autre case
return 0; // pour WM_COMMAND
un BitBlt avec MERGECOPY fait un AND entre la couleur source de chaque pixel et le brush sélectionné dans le DC destination, pour une copie c'est SRCCOPY bye.
|
|
mardi 8 novembre 2005 à 19:54:36 |
Re : [api] Image qui s'efface

hoGan
|
ah yeah :) J'avais oublié de mettre à jour l'affichage avec invalidaterect, c'était ça mon problème ! Merci à toi Chris, c'est vraiment super sympa =)
|
|
mardi 22 novembre 2005 à 22:05:22 |
Re : [api] Image qui s'efface

hoGan
|
Re-bonjour :) j'ai un nouveau problème avec des disparitions d'images :^p Lorsque j'affiche l'une à la suite de l'autre des images dans une fenêtre, que j'abaisse puis remonte celle-ci, toutes les images ont disparu sauf la dernière ! J'ai utilisé la méthode d'affichage décrite plus haut (back buffer) merci
|
|
Cette discussion est classée dans : bouton, image, wm, api, efface
Répondre à ce message
Sujets en rapport avec ce message
Image sur bouton (API win32) [ par LordBob ]
Bonjour a tous,voila j'essaie de mettre une image sur un bouton de mon dialog, je procede donc comme ceci:HANDLE hImage;...hImage = LoadImage(hInst, "
Affichage d'image [ par elinep ]
Bonjour tout le monde!Voila mon probleme:Je me met a la programmation de l'API win32. J'essaye de faire un petit prog qui charge une image .bmp depuis
image dans bouton ?? [ par yohann2004 ]
Salut, Comment peut-on faire pour afficher une image sur un Bouton avec MFC ??? Merci <span style="font-weight: bold; text-decorat
image dans bouton ?? [ par yohann2004 ]
Toujours le meme probleme !! J'ai regardé l'exemple du site, les conseils que l'on m'a donné mais ca marche pas !! Voici mon code : CBitmap picture
redessiner un bouton après appui [ par tdeco ]
SalutEn fait j'ai une boite de dialogue où j'ai plusieurs boutons. Sur j'appui d'un bouton, je modifie une variable, puis j'envoie un message WM_DRAWI
Bouton + Icône ... comment ? - API Windows [ par banane_rose ]
bon bah voilà tout est dans le titre , j'ai mon image prête ( "Quit.bmp" 16x16 ) CODE COMPLET ICI je veux ajouter l'icône sur Quitter
image / bouton / MFC [ par yohann2004 ]
Bonjour, Malgrés tous les exemples je n'arrive toujours pas à afficher une image dans un bouton !! L'image est un Bitmap et je l'ai inséré dans le pro
[API | C++] Affichage pointeur BMP [ par keenrather ]
Bonjour c'est encore moi,Cette fois j'ai un problème avec l'affichage d'une image BMP dans une fenêtre. Je suis toujours en API Windows sous Visual C+
Affichage d'une image sur un bouton [ par aztcaLISS ]
Salut, je veux faire apparaître une image sur mon bouton hBtn1 que je crer sur ma fenêtre mais ça ne fonctionne pas. J'ai vu dans des examples de code
Afficher une image dans une application Win-api avec Dev-cpp [ par by_rabbit_08 ]
Bonjour! J'aurais voulu savoir si quelqu'uns pouvait m'aider pour afficher simplement une image dans une application Win-api avec Dev-cpp. Serait-il p
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|