2010-06-29 4 views
0

J'ai un bloc d'image (image 1) et dans cette boîte j'ai dessiné un rectangle et affiché la partie dessinée à l'aide d'une autre image (image 2). Le problème est que lorsque je dessine un rectangle (dans la boîte d'image 1), la boîte d'image 2 ne s'affiche pas, mais lorsque vous changez la position du formulaire (déplacez le formulaire), la boîte d'image 2 apparaît.Diaplay image issue

Comment afficher la potion tirée ...

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    using (Pen pen = new Pen(Color.Green, 2)) 
    { 
     pen.Color = Color.Red; 
     pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash; 

     e.Graphics.DrawRectangle(pen, rect); 

     foreach (Rectangle r in rectangles) 
     { 
      label1.Top = r.Top; label1.Left = r.Left; label1.Width = r.Width; 
      label1.Height = r.Height; 
      e.Graphics.DrawRectangle(pen, r); 
      e.Graphics.DrawString(label1.Text, label1.Font, new SolidBrush(label1.ForeColor), r); 
     } 
    } 

    if (!(rect.Width <= 0 | rect.Height <= 0)) 
    { 
     sz1.Width = rect.Width * Convert.ToInt16(1.5); 
     sz1.Height = rect.Height * Convert.ToInt16(1.5); 
     pictureBox2.Size = sz1; 
     w.X = 500; w.Y = 20; 
     pictureBox2.Location = w; 
     Bitmap niv = new Bitmap(pictureBox2.Width, pictureBox2.Height); 
     using (Graphics g1 = Graphics.FromImage(niv)) 
     { 
      g1.InterpolationMode = InterpolationMode.HighQualityBicubic; 
      g1.DrawImage(pictureBox1.Image, pictureBox2.ClientRectangle, rect, GraphicsUnit.Pixel); 
     } 

     pictureBox2.Image = niv; 
     pictureBox2.Visible = true; 
     pictureBox2.Invalidate(); 
    } 
} 
+0

Winforms ou WPF? –

+0

Si vous effectuez une peinture personnalisée des contrôles, vous devrez peut-être réviser le code. Si vous fournissez des portions de code appropriées, cela vous aidera. – Nayan

+0

Il serait utile de poster du code. Votre problème semble être que le PictureBox 2 n'est pas rendu, sauf si vous repeindre le formulaire. Le code aidera à diagnostiquer pourquoi cela pourrait se produire. – Prashant

Répondre

1

Vous pouvez peindre ou repeindre votre picturebox en utilisant l'événement OnPaint.

+0

Le code de la boîte 2 est en cours de peinture ... – Nivas

+0

tous les encadrés (1 et 2) sont dans le panneau – Nivas

0

Je l'ai eu. faites un clic droit sur l'image box2 et sélectionnez l'option "Amener à l'avant".