Dessiner image dans PictureBox

Résolu
Barracuda8 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -  
Barracuda8 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit souci de code. Je travaille avec C# et je développe une application sous VB.NET.

J'ai une image dans un "pictureBox", j'aimerai que quand on clique sur cette image, il apparaisse un petit carré de couleur à l'endroit où l'on à cliqué (sur l'image donc).

J'arrive bien à recalculer mon image avec le carré en question. Le problème c'est que je recompose une image qui se met directement dans mon formulaire et non dans mon "PictureBox".

Voici mon code qui fonctionne mais avec le pb expliqué ci-dessus:

System.Drawing.Graphics g;

g = this.CreateGraphics();

g.Clear(this.BackColor);
Rectangle rect = new Rectangle(e.X, e.Y, 16, 16); //mon carré à l'endroit où je clique
Bitmap bitmap = new Bitmap(pict_previous.Image); //pict_previous.Image c'est le PictureBox
float[][] ptsArray ={
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 0.5f, 0},
new float[] {0, 0, 0, 0, 1}};

ColorMatrix clrMatrix = new ColorMatrix(ptsArray);
ImageAttributes imgAttributes = new ImageAttributes();
imgAttributes.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
g.FillRectangle(Brushes.Red, rect);

g.DrawImage(pict_previous.Image, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imgAttributes); //dessine le bon résultat mais pas dans le pictureBox

// Dispose
g.Dispose();

Je ne suis pas sùr que ma méthode soit la bonne donc je suis ouvert à toutes propositions!
Si quelqun pouvait m'aider ce serait sympa.

Merci d'avance,
Barracuda
Configuration: Windows XP
Firefox 2.0.0.14

1 réponse

  1. Barracuda8 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   72
     
    Problème résolu:

    Au lieu de mettre
    this.CreateGraphics(); //le formulaire

    il faut mettre
    g = pict_previous.CreateGraphics();
    0