[MFC] Mettre une image de fond dans une CDialog
Bonjour à tous,
j'ai implémenté la FAQ suivante: http://c.developpez.com/faq/vc/?page...gndBitmapOnDlg, et j'ai quelques interrogations.
Tout d'abord, j'utilise la classe CPicture (très pratique cette classe), exactement comme dans la FAQ.
Je ne met pas mon code car il est exactement identique à la FAQ. Ha si, juste la ligne de chargement de l'image:
Code:
BOOL b = m_Picture.Load("img/orion_iras.jpg");
qui me renvoie TRUE.
1/ J'utilise ce chemin: "img/orion_iras.jpg". N'est-ce pas dangereux? Je veux dire, suis-je certain que l'appli va toujours trouver le fichier?
2/ L'image ne s'applique en image de fond que si je réduis la fenêtre puis que je la restaure. Elle n'est pas appliquée directement au premier affichage de ma fenêtre. Pourquoi et comment y remédier?
3/ Quand mon image est appliquée en image de fond, l'affichage est extrêment lent. Même en mode release. Comment y remédier?
Merci et bon week-end! :fou:
Re: [MFC] Mettre une image de fond dans une CDialog
Citation:
Envoyé par r0d
Bonjour à tous,
j'ai implémenté la FAQ suivante:
http://c.developpez.com/faq/vc/?page...gndBitmapOnDlg, et j'ai quelques interrogations.
Tout d'abord, j'utilise la classe CPicture (très pratique cette classe), exactement comme dans la FAQ.
Je ne met pas mon code car il est exactement identique à la FAQ. Ha si, juste la ligne de chargement de l'image:
Code:
BOOL b = m_Picture.Load("img/orion_iras.jpg");
qui me renvoie TRUE.
1/ J'utilise ce chemin: "img/orion_iras.jpg". N'est-ce pas dangereux? Je veux dire, suis-je certain que l'appli va toujours trouver le fichier?
2/ L'image ne s'applique en image de fond que si je réduis la fenêtre puis que je la restaure. Elle n'est pas appliquée directement au premier affichage de ma fenêtre. Pourquoi et comment y remédier?
3/ Quand mon image est appliquée en image de fond, l'affichage est extrêment lent. Même en mode release. Comment y remédier?
Merci et bon week-end! :fou:
1) si l'application ne change pas le chemin courant oui.
sinon inclus l'image dans les ressources.
2) la lecture doit etre effectuée dans initDialog si c'est le cas rajoute un Invalidate apres lecture.
3) quelle poids a ton image ?,il faut des images legeres ...
:D
Re: [MFC] Mettre une image de fond dans une CDialog
Citation:
Envoyé par farscape
1) si l'application ne change pas le chemin courant oui.
sinon inclus l'image dans les ressources.
ok
Citation:
Envoyé par farscape
2) la lecture doit etre effectuée dans initDialog si c'est le cas rajoute un Invalidate apres lecture.
En effet, avec le Invalidate(), ça marche :D
Citation:
Envoyé par farscape
3) quelle poids a ton image ?,il faut des images legeres ...
:D
En effet, j'avais une image de 400Ko. Je l'ai réduite à 12Ko c'est nettement plus rapide d'un coup :D
:merci:
P.S: au risque de paraître un peu :traine:, il y a un truc qui me parait étrange. La technique qui consiste à utiliser EraseBackground redessine notre image par dessus le gris pas beau de la fenêtre par défaut. Conséquence: le fond est affiché 2 fois. N'y a-t-il pas moyen de remplacer l'image de fond plutôt que de redessiner par dessus?