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 Presentation Foundation Discussion :

Dessiner une portion d'image dans une autre image


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut Dessiner une portion d'image dans une autre image
    Bonjour,

    Sous winforms avec les bitmaps on faisait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Graphics l_graphics = Graphics.FromImage(l_destBmp);
                l_graphics.DrawImage(l_srcBmp, l_dstRect, l_srcRect, GraphicsUnit.Pixel);
                l_graphics.Dispose();
    Comment fait-on avec les ImageSource / ImageBitmap / BitmapImage / BitmapSource / WriteableBitmap / DrawingImage / ImageDrawing / DrawingContext qu'on sait même plus tellement y'en a.... ??

    D'avance merci,
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    CroppedBitmap ?

  3. #3
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Si j'ai bien compris, CroppedBitmap va me créer une nouvelle image à partir d'une portion d'une image existante, maintenant il faut dessiner la CroppedImage sur l'image destination, en la sizant pour qu'elle tienne dans le rectangle souhaité (de cette image destination), ca se fait avec le DrawingContext ? (mais dans ce cas, la bitmap destination doit obligatoirement être de type RenderTargetBitmap, ce qui interdit par la suite qu'on puisse y écrire des pixels directement dedans, puisqu'elle n'est pas de type WriteableBitmap).

    Je comprends rien, y'a pas possibilité d'avoir en WPF une classe BitmapToutCourt, dans laquelle on puisse à la fois écrire des pixels, extraire une portion, dessiner des images et des formes, plutôt qu'à chaque fois créer des nouvelles instances d'image ?
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Pour dessiner une portion d'image dans une autre image, j'utilisais dans un de mes projets le code suivant :

    Code c# : 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
        private double ScaleIcoBt = 0.35;
     
        private BitmapSource MergeImages(BitmapSource img1, BitmapSource img2) {
          DrawingVisual drawingVisual = new DrawingVisual();
          DrawingContext drawingContext = drawingVisual.RenderOpen();
          drawingContext.DrawImage(img1, new Rect(0, 0, img1.Width, img1.Height));
          drawingContext.DrawImage(img2, new Rect(img1.Width - img1.Width * ScaleIcoBt,
                                                  img1.Height - img1.Height * ScaleIcoBt,
                                                  img1.Width * ScaleIcoBt,
                                                  img1.Height * ScaleIcoBt));
     
          drawingContext.Close();
     
          RenderTargetBitmap rtb = new RenderTargetBitmap(img1.PixelWidth,
                                                          img1.PixelHeight,
                                                          img1.DpiX,
                                                          img1.DpiY,
                                                          PixelFormats.Pbgra32);
          rtb.Render(drawingVisual);
     
          return rtb;
        }

  5. #5
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    J'ai effectivement vu qu'on pouvait faire ca, mais ca me pose des problèmes :
    * tu ne peux pas prendre une partie de img2, mais obligatoirement toute l'img2 (vu que tu ne sais pas si c'est une CroppedBitmap ou pas).
    * Ca te donnes en sortie une RenderTargetBitmap, donc tu ne peux plus venir y modifier directement les pixels.
    * Vu que tu crées une nouvelle image à chaque fois que tu merges, l'image img1 reste inchangée, et en plus si tu répète X fois l'opération, ca prend beaucoup de ressources (processeur et mémoire) alors que ca pourrait être plus léger en modifiant directement img1.

    Je ne comprends pas leur système de type d'image différent pour chaque opération. Ce qui manque c'est un tutorial qui expliquerait la logique d'enchainement de traitement sur image.

    Par exemple, qui montrerait le cas suivant:
    * Je charge une image depuis un fichier
    * Je dessine (par dessus ce qu'il y avait déjà) du texte et des portions d'autres images.
    * Puis je la passe en dégradé de gris par un traitement sur tous les pixels.
    * Puis je la re-sauve.

    Le tout en travaillant sur la même instance d'image...
    ZTAB (Ze Text Adventure Builder)

    Logiciel très intuitif et ergonomique de création de jeux d'aventure et de livres dont vous êtes le héros.

    http://sites.google.com/site/ztabsoft/

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  2. Réponses: 9
    Dernier message: 13/03/2008, 01h34
  3. Ce qui est dans une table mais pas dans l'autre !
    Par youyoule dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/12/2007, 12h57
  4. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  5. Recherche de valeur dans une feuille et affichage dans une autre
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2007, 09h40

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