[C#] Affichage d'image [Résolu]

Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
- - Dernière réponse : MickParadiseLost
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
- 5 juil. 2005 à 00:52
Bonjour, j'ai une image qui s'affiche dans une fenetre MDI suite a un clic sur ouvrir dans un openfiledialog.



Voici le code d'affichage de l'image dans cette nouvelle fenetre:



protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;



g.DrawImage(bmp, 0, 0, (int)(bmp.Width * coeff), (int)(bmp.Height * coeff));



}



coeff =1 : pour que l'image s'affiche en taille réelle.



1) J'aimerais qu'a la place de s'afficher aux coordonnées 0,0 de la
fenetre, l'image s'affiche de maniere centrée horizontalement et
verticalement dans la fenetre. Je remplace ce qui est en orange par
quoi ?

2) J'aimerais écrire un truc du style: Quand bmp > ClientSize, afficher les scrollbars.

Mais je n'arrive pas a traduire ça en C#.

3) J'ai encore un dernier probleme: j'aimerais afficher le nom de
l'image dans la barre de titre de la fenetre qui affiche l'image. J'ai
écrit ceci:




Form2 frm = new Form2(OuvrirImg.FileName);

frm.Text= OuvrirImg.FileName;

frm.MdiParent =this;

frm.Show();



Ce qui est écrit en rose affiche le chemin complet de l'image ouverte alors que moi je voudrais juste le nom et l'extension.

De plus, si vous pouvez me donner un indice pour afficher la taille
actuelle de l'image en % dans cette barre de titre, ça serait cool



Aidez moi svp. Merci d'avance
Afficher la suite 

Votre réponse

20/32 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
3
Merci
Pour la methode à Mx ca donne ca je pense:

float coef = 0.2f;
float w = bmp.Width * coef;
float h = bmp.Height * coef;
float x = ( this.ClientSize.Width - w ) / 2.0f;
float y = ( this.ClientSize.Height - h ) / 2.0f;


g.DrawImage( bmp,x, y, w, h );

Merci Lutinore 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
3
Merci
Nan, j'ai oublié que ton image ne remplie pas totalement ta forme, c'est donc pas la bonne solution.. Reste plus que le double buffering, soit avec la méthode SetStyle soit avec un bitmap..


this.SetStyle( ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer, true ); // Dans le ctor

Merci Lutinore 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
3
Merci
eheh.. C'est pas normal que la classe Path ne marche pas chez toi !! Elle marche chez Mx et chez moi.. Sinon la bonne vielle methode :

file = ofd.FileName.Substring( ofd.FileName.LastIndexOf( "\" ) + 1 );

Merci Lutinore 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
3 ) Path.GetFileName( String path );
Commenter la réponse de Lutinore
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
1) Pour que ce soit centré, tu remplaces tes coordonées 0, 0 par (la
moitié de la largeur de ta fenetre - la moitié de la largeur de ton
image), pareil pour la hauteur.


2) if(bmp.Size > this.ClientSize) this.AutoScroll = true; je pense

Mx
Commenter la réponse de MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
Heureusement que Lutinore est la pour la 3, sinon j'allais te proposer d'utiliser

la méthode OuvrirImg.FileName.LastIndexOf("\"); combinée
avec un OuvrirImg.FileName.SubString()

Mx
Commenter la réponse de MorpionMx
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Vi moi aussi j'ai utilisé LasIndexOf pendant longtemps, vieux réflexe je suppose : )
Commenter la réponse de Lutinore
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
merci pour tout. je vais essayer ça aussitot et je vous dit quoi .
Commenter la réponse de MickParadiseLost
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
ça y'est, j'ai testé vos codes.


Donc, pour le centrage de l'image dans la fenetre sa marche mais si
j'etire la fenetre, l'image ne se réaffiche pas centrée et garde sa
derniere position. C'est en réduisant la fenetre pui en la réaffichant
en grand qu'elle se recentre bien. C'est un probleme de
raffraichissement automatique. Je sais pas comment faire ça.





Pour le nom qui s'affiche dans la barre de titre, je sais pas par quoi
remplacer Path. Si on pouvait me donner ce que je doit marquer ça irait
mieux .





Et pour les scrollbars, j'arrive toujours pas a le faire
Commenter la réponse de MickParadiseLost
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Le path c'est la propriété FileName du dialog.. Pour l'autre problème tu peux mettre un Invalidate( this.ClientRectangle ) dans la methode "overridée" OnResize..
Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Y'a aussi SetStyle..
Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Path est une classe static
Commenter la réponse de Lutinore
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
La classe Path n'est pas statique, mais plutot ses méthodes. :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
Merci.

Pour l'invalidate, sa marche presque. L'image reste centrée tout le temps mais elle clignote. Sa fait mal aux yeux



Pour le path, j'ai toujours pas compris désolé. Je suis pas très fort en c#.

Je voudrais juste que tu me dise ce que j'écrit a la place de ça:




Form2 frm = new Form2(OuvrirImg.FileName);
frm.Text= OuvrirImg.FileName;



En tout cas, merci beaucoup pour toutes vos aides.
Commenter la réponse de MickParadiseLost
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Elle a un ctor privé c'est ce que j'appelle une classe statique.. il me semble que je ne suis pas le seul à utilisé ce terme.. Si le mot static est maintenant dispo pour les classes dans C# 2.0 c'est justement pour ce genre de classe.
Commenter la réponse de Lutinore
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
0
Merci
Path.GetFileName( ofd.Filename ); // ofd = OpenFileDialog
Commenter la réponse de Lutinore
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
J'ai écrit ce que tu m'as dit et ilme met sa:



C:\Documents and Settings\Eternal
Suffering\Mes documents\C#\Blasphemy v2.0\Form1.cs(567): Le type ou le
nom d'espace de noms 'Path' est introuvable (une directive using ou une
référence d'assembly est-elle manquante ?)



Je fais quoi ?
Commenter la réponse de MickParadiseLost
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
0
Merci
Ajoute la directive using System.IO;

Mx
Commenter la réponse de MorpionMx
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
elle y est déja et sa marche toujours pas
Commenter la réponse de MickParadiseLost
Messages postés
86
Date d'inscription
samedi 26 février 2005
Dernière intervention
2 avril 2008
0
Merci
sinon, une idée pour l'image qui clignote a cause de "invalidate..." ?
Commenter la réponse de MickParadiseLost

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.