Csharp/CSharp Tutorial/2D/BMP

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Draw BMP images

<source lang="csharp">using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class ImageDraw : System.Windows.Forms.Form {

 private System.ruponentModel.Container components = null;
 private Bitmap bMapImageA = new Bitmap("YourFile.bmp");
 private Bitmap bMapImageB = new Bitmap("YourFile.bmp");
 private Bitmap bMapImageC = new Bitmap("YourFile.bmp");
 private Rectangle rectA = new Rectangle(10, 10, 90, 90);
 private Rectangle rectB = new Rectangle(10, 110, 90, 90);
 private Rectangle rectC = new Rectangle(10, 210, 90, 90);
 private bool isImageClicked = false;
 private int imageClickedIndex;
 public ImageDraw()
 {
   InitializeComponent();
 }
 protected override void Dispose( bool disposing )
 {
   if( disposing )
   {
     if (components != null) 
     {
       components.Dispose();
     }
   }
   base.Dispose( disposing );
 }
 private void InitializeComponent()
 {
   this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
   this.ClientSize = new System.Drawing.Size(376, 361);
   this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ImageDraw_MouseUp);
   this.Paint += new System.Windows.Forms.PaintEventHandler(this.ImageDraw_Paint);
 }
 [STAThread]
 static void Main() 
 {
   Application.Run(new ImageDraw());
 }
 private void ImageDraw_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
 {
   Point mousePt = new Point(e.X, e.Y);
   if(rectA.Contains(mousePt))
   {
     isImageClicked = true;
     imageClickedIndex = 0;
   }
   else if(rectB.Contains(mousePt))
   {
     isImageClicked = true;
     imageClickedIndex = 1;
   }
   else if(rectC.Contains(mousePt))
   {
     isImageClicked = true;
     imageClickedIndex = 2;
   }  
   else  // Not in any shape, set defaults.
   {
     isImageClicked = false;
   }
   Invalidate();
 }
 private void ImageDraw_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 {
   Graphics g = e.Graphics;
   g.DrawImage(bMapImageA, rectA);
   g.DrawImage(bMapImageB, rectB);
   g.DrawImage(bMapImageC, rectC);
   if(isImageClicked == true)
   {
     Pen outline = new Pen(Color.Purple, 5);
     switch(imageClickedIndex)
     {
       case 0:
         g.DrawRectangle(outline, rectA);
         break;
       
       case 1:
         g.DrawRectangle(outline, rectB);
         break;
       
       case 2:
         g.DrawRectangle(outline, rectC);
         break;
       default:
         break;
     }
   }      
 }

}</source>

Load bmp image from file

<source lang="csharp">using System; using System.Collections.Generic; using System.ruponentModel; using System.Data; using System.Drawing; using System.Windows.Forms;

 class Form1 : Form
 {
   private Image theImage;
   public Form1()
   {
     SetStyle(ControlStyles.Opaque, true);
     theImage = new Bitmap("person.bmp");
   }
   protected override void OnPaint(PaintEventArgs e)
   {
     Graphics g = e.Graphics;
     g.DrawImage(theImage, ClientRectangle);
   }
   [STAThread]
   static void Main()
   {
     Application.EnableVisualStyles();
     Application.Run(new Form1());
   }
 }</source>