IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Traitement avec une image vectorielle


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Traitement avec une image vectorielle
    Bonjour tout le monde,

    voici mon problème:
    J'ai une image vectorielle (.emf) de grande taille. J'aimerais extraire de cette image vectorielle une portion de 720x420px (Bitmap) pour pouvoir ensuite faire un traitement d'image dessus.

    J'ai essayé avec quelque chose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fullMire = new Metafile("circleV3.emf");
     
    Rectangle destRect = new Rectangle(0, 0, 720, 480);
    Rectangle srcRect = new Rectangle(dx, dy, 360, 240); // valeurs differentes pour faire un zoom.
    GraphicsUnit units = GraphicsUnit.Pixel;
    e.Graphics.DrawImage(fullMire, destRect, srcRect, units);
    Avec ce code ça affiche bien ce que je souhaites, le problème est que je ne vois pas comment exploiter l'image que j'affiche. Est-ce qu'il y a une méthode pour sauver ce qui est affiché?


    Sinon j'ai fait un deuxième essai comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    fullMire = new Metafile("circleV3.emf");
    Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
    fullMireBmp = (Bitmap)fullMire.GetThumbnailImage(3500, 3500, myCallback, IntPtr.Zero);
     
    // Clone a portion of the Bitmap object
    Rectangle cloneRect = new Rectangle(dx, dy, 720, 480);
    mire720_480 = fullMireBmp.Clone(cloneRect, fullMireBmp.PixelFormat);
    // Draw the cloned portion of the Bitmap object.
    e.Graphics.DrawImage(mire720_480, 0, 0);
    mire720_480.Save("mire720.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
    Avec ce code j'ai accès à mon image Bitmap, le problème est que l'image affichée est correcte, mais l'image sauvée n'est pas la même... il s'agit de l'image négative.



    Je suis donc à l'ouest pour le moment, alors si quelqu'un à une idée pour m'aider...


    Merci d'avance !

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Je suppose que quand tu dis "image négative" c'est parce que ton image sauvée est toute noire

    La raison est que tu dois d'abord donner un fond a ton image

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics.Clear(TaCouleur);
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Hello,

    merci pour ta réponse, j'ai essayé j'obtiens toujours la même chose qu'avant.
    J'ai fait quelque chose comme ça, mais je sais pas si c'est juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    private Bitmap mire720_480 = new Bitmap(720, 480);
     
    private void tabPage_mire_Paint(object sender, PaintEventArgs e)
    {      
    // Clone a portion of the Bitmap object.
    Rectangle cloneRect = new Rectangle(dx, dy, 720, 480);
     
    // Create graphics object for alteration.
    Graphics newGraphics = Graphics.FromImage(mire720_480);
     
    newGraphics.Clear(Color.White);
    mire720_480 = fullMireBmp.Clone(cloneRect, fullMireBmp.PixelFormat);
     
    // Draw image to file.
    newGraphics.DrawImage(mire720_480, 0, 0);
     
    // Draw image to screen.
    e.Graphics.DrawImage(mire720_480, 0, 0);
     
    // Save picture
    mire720_480.Save("mire720.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
     
    // Dispose of graphics object.
    newGraphics.Dispose();
    }

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Ah oui il y a un problème logique la !


    // Tu cree un graphics a partir de ton image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphics newGraphics = Graphics.FromImage(mire720_480);
    // Tu zape cette image avec un fond blanc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newGraphics.Clear(Color.White);
    // BOUM tu annule ce que tu viens de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mire720_480 = fullMireBmp.Clone(cloneRect, fullMireBmp.PixelFormat);
    // RE-BOUM ca c'est faire A=A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newGraphics.DrawImage(mire720_480, 0, 0);
    // Apres il faut voir la nécessité de mette ton code danc cet event Handler
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Voilà voilà, j'y suis parvenu.

    Le code que j'utilise finalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Form1()
    {
          InitializeComponent();
          mire720_480 = new Bitmap(720, 480);
          fullMire = new Metafile("circleV3.emf");
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    private void pictureBox_mire_MouseDown(object sender, MouseEventArgs e)
    {
          if (e.Button == MouseButtons.Left)
          {
               origine = new Point(e.X, e.Y);
           }
    }
     
    private void pictureBox_mire_MouseUp(object sender, MouseEventArgs e)
    {
          if (e.Button == MouseButtons.Left)
          {
               dx -= (origine.X - e.X);
               dy -= (origine.Y - e.Y);
     
               using (Graphics g = Graphics.FromImage(mire720_480))
               {
                    g.Clear(System.Drawing.Color.White);
                    g.DrawImage(fullMire, dx, dy);
               }
               pictureBox_mire.Image = (Bitmap)mire720_480;
               Processing(mire720_480);
           }
    }
    merci pour ton aide olibara !


    à une prochaine, Faff

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Avec plaisir !

    N'oublie pas le résolu !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2007, 20h40
  2. Prob avec une image
    Par inferno66667 dans le forum Langage
    Réponses: 2
    Dernier message: 18/11/2005, 11h09
  3. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  4. [javascript] Scroll avec une image
    Par Salih-du-91 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/10/2005, 07h46
  5. Centrage de texte avec une image en arriere plan
    Par MasterOfChakhaL dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/08/2005, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo