begin process at 2012 05 28 16:27:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Afficher une image Jpeg dans une fenêtre (en fond)


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

Afficher une image Jpeg dans une fenêtre (en fond)

jeudi 30 janvier 2003 à 17:51:07 | Afficher une image Jpeg dans une fenêtre (en fond)

JayC

Salut !

J'essaye d'afficher une image dans mon application en VC++ (j'utilise VC++ 6.0) et je sais vraiment pas comment faire.
En fait ce que je voudrais faire c'est la mettre en fond et placer mes controles (essentiellement des boutons) par dessus.
Si quelqu'un peut m'aider c'est cool parce que je suis vraiment bloqué...
Merci !

JayC
vendredi 16 avril 2004 à 10:54:05 | Re : Afficher une image Jpeg dans une fenêtre (en fond)

Aethys

Salut. J'ai trouvé la réponse sur ce site justement.

Tout d'abord tu charges le BMP ou JPEG ou GIF depuis le fichier sur le disque.

HBITMAP LoadAnImage(char* FileName)
{
// Use IPicture stuff to use JPG / GIF files
IPicture* p;
IStream* s;
// IPersistStream* ps;
HGLOBAL hG;
void* pp;
FILE* fp;

// Read file in memory
fp = fopen(FileName,"rb");
if (!fp)
return NULL;

fseek(fp,0,SEEK_END);
int fs = ftell(fp);
fseek(fp,0,SEEK_SET);
hG = GlobalAlloc(GPTR,fs);
if (!hG)
{
fclose(fp);
return NULL;
}
pp = (void*)hG;
fread(pp,1,fs,fp);
fclose(fp);

// Create an IStream so IPicture can
CreateStreamOnHGlobal(hG,false,&s);
if (!s)
{
GlobalFree(hG);
return NULL;
}

OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);

if (!p)
{
s->Release();
GlobalFree(hG);
return NULL;
}
s->Release();
GlobalFree(hG);

HBITMAP hB = 0;
p->get_Handle((unsigned int*)&hB);

// Copy the image. Necessary, because upon p's release,
// the handle is destroyed.
HBITMAP hBB = (HBITMAP)CopyImage(hB,IMAGE_BITMAP,0,0,
LR_COPYRETURNORG);

p->Release();
return hBB;
}

Ca te renvoie un HBITMAP que tu affiches ensuite dans ton OnDraw de cette facon:

HDC hdcBits;
BITMAP bm;
hdcBits = CreateCompatibleDC(pDC->m_hDC);
GetObject (Himage, sizeof(BITMAP), &bm);
SelectObject(hdcBits,Himage);

//les X,Y des coins sont en pixels de l'ecran donc le (0;0) est en haut à gauche de ta fenetre.
StretchBlt(pDC->m_hDC,
X_CoinHautGauche,
Y_CoinHautGauche,
int( X_CoinBasDroite-X_CoinHautGauche),
int(-(Y_CoinBasDroite-Y_CoinHautGauche)),
hdcBits,
0,
0,
bm.bmWidth,
bm.bmHeight,
SRCAND);
DeleteDC(hdcBits);

Attention StretchBlt est utile pour etirer ton image d'un rectangle vers un autre. Sinon tu as BitBlt que tu peux utiliser. (Remarque : StretchBlt marche bien comme ca donc ... au moins tu auras toujours la possibilité avec StretchBlt d'etirer ton image pour remplir tout ton arriere plan par exemple ).

J'espère que ca t'aide.

Aethys
vendredi 16 avril 2004 à 10:57:59 | Re : Afficher une image Jpeg dans une fenêtre (en fond)

Aethys

Autant pour moi je me rend compte que j'ai répondu à coté car ton problème vient en fait de l'éditeur de ressources ... donc tu ne demandais pas une solution par programmation :p

Sinon petite astuce comme ca, pour que ton image passe bien en arriere plan, mets la en dernier dans l'ordre de tabulation (ou edite carrément ton fichier .rc pour mettre ton controle de type "image" en dernier dans ta fenetre).
vendredi 3 décembre 2004 à 17:04:08 | Re : Afficher une image Jpeg dans une fenêtre (en fond)

ark1979

Ne pas oublier d'inclure ceci pour utiliser l'excellent exemple d'affichage d'image Jpeg ou gif :

#include <ocidl.h>
#include <olectl.h>


Salut !
mercredi 25 mai 2005 à 18:06:21 | Re : Afficher une image Jpeg dans une fenêtre (en fond)

Arnaud16022

Membre Club
comment on fait si le .jpg il est en ressource? (pas de .bmp)
merci
_______________________
Omnia vincit labor improbus


Cette discussion est classée dans : afficher, image, fond, fenêtre, jpeg


Répondre à ce message

Sujets en rapport avec ce message

Control Picture [ par Xentor609 ] Salut,Je voudrais afficher une image(jpeg ou bmp), dans le controle picture d'une dialogbox.J'arrive a afficher une image de type Jpeg, BMp ou gif ave Instertion dynamique d'une image sur le fond d'une fenêtre [ par raidentr ] Avec VC++ 6.0 :Est-ce possible d'insérer une image dynamiquement avec la commande CREATEWINDOWSEX ? Si oui quelle est la ligne de commande exacte ? en Image de fond dans une fenêtre [ par ] Lut je cherche le moyen simple d'afficher une image en fond dans une fenêtre.J'utilise une image inclus dans les ressource du progdonc "IDB_TRUC". (de MFC c++ : comment mettre une image en fond de le fenêtre [ par hao21 ] Bonjour.Dans le cadre d'une programmation en visual c++ avec utilisation des MFC, j'ai besoin  de mettre une image en fond de la fenetre. J'aimerai sa afficher une image comme fond sous dev-cpp [ par sebastienmz ] bonjour j'ai essayer http://www.cppfrance.com/code.aspx?ID=16811 mais elle marche pas j'ai l'impression que le case WM_PAINT marche pas comment faire Afficher une image .jpeg dans un Picture Control [ par Flaken ] Bonjour,Je voudrais mettre une image en format .jpeg dans un Picture Control. Pour cela j'ai créer un bouton parcourir qui permet de sélectionner une Afficher une image dans un controle picture en MFC. [ par alaya12 ] Salut à tous.Voila je suis sous Visual Studio 2005 et j'ai créer une MFC. J'ai ajouter un bouton parcourir où je récupere le chemin de la photo select Winapi avec langage C : Comment afficher un texte dans une fenêtre en rafraichissant le texte par un autre. [ par sanderriere ] Bonjour, Comment faire en sorte d'afficher un texte dans une fenêtre et de pouvoir ensuite faire en sorte de le modifier lorsqu'on le souhaite par un Scroll [ par galax98 ] Bonjour Excusez moi car cette question est certainement très basique. J'ouvre une fenêtre qui contient une image de hauteur 1000. Ma fenêtre n'a une h Récuperer l'image d'une fenêtre en bmp. [ par Nalm ] Bonjour, Je débute en C++ et je n'arrive pas à trouver une réponse (que je comprenne) à mon problème: J'ai besoin de créer un fichier bmp à partir d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,530 sec (3)

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