none
[GDI+] Comment récupérer la couleur d'un pixel d'une image ? RRS feed

  • Question

  • bonjour à tous,

    voici un problème que je ne parviens pas à résoudre.

    Dans un projet, je dois surcharger une image (pour réaliser des cartes...). Le principe est simple : je charge un fond de carte (une image bmp, gif ou autre), et je dessine ensuite dessus avant de le réengistrer sous forme d'un fichier png.

    Pour ce faire, j'utilise les lignes suivantes :

     

    //on créé un bitmap avec le fichier de fond de carte 

    private Bitmap imageFondDeCarte = new Bitmap(fondCarte);

    //on cree un objet image dans lequelle sera dessinée l'image avec les mêmes dimensions que celles du fond de carte

    private imageCree = new Bitmap(imageFondDeCarte.Width,imageFondDeCarte.Height,PixelFormat.Format24bppRgb);

    //g est la surface dans laquelle on dessine, créée à partir de la bitmap "imageCree"

    private Graphics g = Graphics.FromImage(this.imageCree);

    //on définit le rectangle dans lequel on dessinera le fond de carte

    private Rectangle rectangle = new Rectangle(0,0,imageFondDeCarte.Width,imageFondDeCarte.Height);

    //et on dessine le fond de carte dans le rectangle

    g.DrawImage(imageFondDeCarte, rectangle);

     

    jusque là tout va bien. Là où les choses se compliquent, c'est quand je voudrais dessiner sur l'objet g (classe Graphics) quelque chose, mais que là où il y a du blanc (en fait, il sagit de ne pas surcharger les côtes en redessinant dessus).

    Comment faire pour récupérer la couleur d'un pixel à l'emplacement X,Y ?

     

    Merci infiniment à celui qui m'apportera de l'aide à ce problème épineux !

     

    Henri

    jeudi 3 janvier 2008 21:52

Toutes les réponses

  • Je ne suis pas sûr d'avoir tous compris mais je pense que faire un teste sur chaque pixel de votre images est tout sauf performant.

    Quasiment toutes les API de dessins utilisent des mécanismes de pochoir comme des canaux de transparence, des couleurs transparentes, des masques, des régions etc....

    Je pense donc que votre solution, bien que naturelle n'est pas la meilleure.

    Si nous avons plus d'informations sur le type d'opération que vous voulez effectuer sur l'image résultante et comment vous comptez appliquer les autres images dessus.

     

    lundi 7 janvier 2008 15:46
  • Merci Paul pour votre réponse

    Mon besoin est assez simple : je colorie une image à l'aide des méthodes de la classe Graphics, comme DrawImage, et je voudrai que cela ne colorie pas les endroits correspondant à un fond particulier (et qui possède une couleur particulière, comme le blanc).

    Je ne sais pas si c'est clair...

    Merci de votre aide

    Henri

    mardi 5 février 2008 18:09