Manipulation image en .NET

TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 12 mars 2004 à 16:29
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008 - 4 avril 2004 à 19:50
Bonjour,

J'aimerai savoir comment vous feriez pour afficher une image centrée à l'écran dont ses dimensions sont plus petites que la résolution écran.... en .NET

Je m'explique : vous faites un formulaire de la taille de l'écran, vous prenez une image plus petite dans le backgroundImage ou dans un composant image de la dimension de l'écran. Si vous voulez la centrer sans la redimensionner comment vous faites ? Car par défaut, g.drawimage fait une "mosaique" de l'image (le reste du composant image est rempli de parties de l'image puisque celle ci est plus petite que le composant lui même) en plus g.drawimage ca ne "s'incruste pas" dans le composant.

Moi pour le moment je capture l'image dans une variable image. Et je rempli des getpixel et setpixel (de noir) via 2 boucles (X & Y) et je met l'image au centre avec les setpixel. mais 1024*768 pixels à traiter ca prend trop de temps !!

Merci pour vos éventuelles réponses

TIGER

4 réponses

alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
3 avril 2004 à 14:27
Va voir la source que j'ai posé hier...

http://www.vbfrance.com/code.aspx?ID=21650

Et regarde le composant Fgrand. Si j'ai bien compris ta demande, tu devrai trouver certaines réponses.

Mais j'utilise pas la propriété background, sinon, je sais pas zoomer...
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
4 avril 2004 à 15:11
Merci, mais je vois pas trop où se trouve la solution. Je découvre ton projet, ton code étant assez long, je vais essayer de le lire à tête reposée.

TIGER
0
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
4 avril 2004 à 16:54
Attend, en relisant ton message, voici deux solutions sans doute plus simples :
1- création d'une nouvelle image avec des marges et affection de celle_ci à ta propriété background :

Dim im As New Bitmap(f.ClientSize.Width, f.ClientSize.Height)
Dim g As Graphics
g = Graphics.FromImage(im)
g.DrawImage(myimage, (im.Width - myimage.width) / 2, (im.Height - myimage.height) / 2)
g.Save()
f.BackgroundImage = im

2- Utilisation de l'évenement paint de ta form :

Private Sub Pa_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Pa.Paint
e.graphics.DrawImage(myimage, (f.ClientSize.Width - myimage.width) / 2, (f.ClientSize.Height - myimage.height) / 2)
End Sub

Othographe à vérifier, car y'a pas de completion...
Ca marche ?
0
TigerFab Messages postés 115 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 18 mai 2008
4 avril 2004 à 19:50
Super !

Ces 2 bouts de code font ce que je voulais !

Merci à toi alicvb !!

Parfait je vais pouvoir terminer le petit projet que j'étais en train de faire (un screensaver paramétrable en .net) et le poster sur ce site.

Encore merci pour ton aide précieuse !

TIGER
0
Rejoignez-nous