Mega Code Archive

 
Categories / C# / GUI Windows Form
 

Bitmap Demo

/* GDI+ Programming in C# and VB .NET by Nick Symmonds Publisher: Apress ISBN: 159059035X */ using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace BitMapExt_c {     /// <summary>     /// Summary description for Form1.     /// </summary>     public class BitMapExt : System.Windows.Forms.Form     {     #region Class Local Variables     private Bitmap WholeBMP;     private Bitmap SaveBMP;     private Bitmap TLBMP;     private Bitmap TRBMP;     private Bitmap BLBMP;     private Bitmap BRBMP;     private Rectangle DrawRect;     private Point TLpt;     private Point TRpt;     private Point BLpt;     private Point BRpt;     private int Counter = 0;     private ImageAttributes Ia;     #endregion      private System.ComponentModel.IContainer components;     private System.Windows.Forms.Timer T1;     private System.Windows.Forms.Button cmdGo;     public BitMapExt() {             InitializeComponent();       this.SetStyle(ControlStyles.DoubleBuffer, true);       this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);       WholeBMP = new Bitmap("crane.jpg");       DrawRect = new Rectangle(0, 0, WholeBMP.Width, WholeBMP.Height);       DrawRect.X = this.Width/2 - WholeBMP.Width/2;       DrawRect.Y = this.Height/2 - WholeBMP.Height/2;       T1.Interval = 75;       T1.Enabled = false;     }         protected override void Dispose( bool disposing )         {             if( disposing )             {                 if (components != null)                  {                     components.Dispose();                 }             }       if (WholeBMP != null)         WholeBMP.Dispose();       if (SaveBMP != null)         SaveBMP.Dispose();       if (TLBMP != null)         TLBMP.Dispose();       if (TRBMP != null)         TRBMP.Dispose();       if (BLBMP != null)         BLBMP.Dispose();       if (BRBMP != null)         BRBMP.Dispose();       if (Ia != null)         Ia.Dispose();             base.Dispose( disposing );         }         #region Windows Form Designer generated code         /// <summary>         /// Required method for Designer support - do not modify         /// the contents of this method with the code editor.         /// </summary>         private void InitializeComponent()         {       this.components = new System.ComponentModel.Container();       this.cmdGo = new System.Windows.Forms.Button();       this.T1 = new System.Windows.Forms.Timer(this.components);       this.SuspendLayout();       //        // cmdGo       //        this.cmdGo.Location = new System.Drawing.Point(328, 336);       this.cmdGo.Name = "cmdGo";       this.cmdGo.Size = new System.Drawing.Size(48, 24);       this.cmdGo.TabIndex = 0;       this.cmdGo.Text = "GO";       this.cmdGo.Click += new System.EventHandler(this.Explode);       //        // T1       //        this.T1.Tick += new System.EventHandler(this.T1_Tick);       //        // Form1       //        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);       this.ClientSize = new System.Drawing.Size(392, 373);       this.Controls.AddRange(new System.Windows.Forms.Control[] {                                                                   this.cmdGo});       this.MaximizeBox = false;       this.MinimizeBox = false;       this.Name = "Form1";       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;       this.Text = "Exploding Bitmap";       this.Load += new System.EventHandler(this.Form1_Load);       this.ResumeLayout(false);     }         #endregion         [STAThread]         static void Main()          {             Application.Run(new BitMapExt());         }     private void Form1_Load(object sender, System.EventArgs e)     {     }     protected override void OnPaint(PaintEventArgs e)     {       Graphics G = e.Graphics;       if ( WholeBMP != null )           {         G.DrawImage(WholeBMP, DrawRect);         return;       }              if ( TLBMP != null )         G.DrawImage( TLBMP, new Rectangle(TLpt, TLBMP.Size),           0, 0,           TLBMP.Width, TLBMP.Height,           GraphicsUnit.Pixel,            Ia );       if ( TRBMP != null )         G.DrawImage( TRBMP, new Rectangle(TRpt, TRBMP.Size),           0, 0,           TRBMP.Width, TRBMP.Height,           GraphicsUnit.Pixel,            Ia );              if ( BLBMP != null )         G.DrawImage( BLBMP, new Rectangle(BLpt, BLBMP.Size),           0, 0,           BLBMP.Width, BLBMP.Height,           GraphicsUnit.Pixel,            Ia );              if ( BRBMP != null )         G.DrawImage( BRBMP, new Rectangle(BRpt, BRBMP.Size),           0, 0,           BRBMP.Width, BRBMP.Height,           GraphicsUnit.Pixel,            Ia );       }     private void Explode(object sender, System.EventArgs e)     {       if ( WholeBMP != null )       {         cmdGo.Enabled = false;         int L = 0;         int T = 0;         int Cx = (int)(WholeBMP.Width/2);         int Cy = (int)(WholeBMP.Height/2);         Rectangle R1 = new Rectangle( L, T, Cx, Cy );         Rectangle R2 = new Rectangle( Cx, T, Cx, Cy );         Rectangle R3 = new Rectangle( L, Cy, Cx, Cy );         Rectangle R4 = new Rectangle( Cx, Cy, Cx, Cy );         SaveBMP = WholeBMP;         TLBMP = WholeBMP.Clone(new Rectangle( L, T, Cx, Cy ),                                  WholeBMP.PixelFormat);         TRBMP = WholeBMP.Clone(new Rectangle( Cx, T, Cx, Cy ),                                  WholeBMP.PixelFormat);         BLBMP = WholeBMP.Clone(new Rectangle( L, Cy, Cx, Cy ),                                  WholeBMP.PixelFormat);         BRBMP = WholeBMP.Clone(new Rectangle( Cx, Cy, Cx, Cy ),                                  WholeBMP.PixelFormat);         WholeBMP = null;                  int Gap = 10;         TLpt = new Point( DrawRect.Left-Gap, DrawRect.Top-Gap );         TRpt = new Point( DrawRect.Left+Cx+Gap, DrawRect.Top-Gap );         BLpt = new Point( DrawRect.Left-Gap, DrawRect.Top+Cy+Gap );         BRpt = new Point( DrawRect.Left+Cx+Gap, DrawRect.Top+Cy+Gap );         T1.Enabled = true;         Invalidate();       }     }     private void T1_Tick(object sender, System.EventArgs e)     {       Counter += 1;       if ( Counter == 62 )       {         Counter = 0;         cmdGo.Enabled = true;         T1.Enabled = false;         WholeBMP = SaveBMP;       }       TLpt.X-=1;       TLpt.Y-=1;       TRpt.X+=1;       TRpt.Y-=1;       BLpt.X-=1;       BLpt.Y+=1;       BRpt.X+=1;       BRpt.Y+=1;       // Initialize a color matrix.       //Set the alpha for the whole image       float[][] m ={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, (1-(float)Counter/62), 0},                      new float[] {0, 0, 0, 0, 1}};        ColorMatrix cm = new ColorMatrix(m);       // Create an ImageAttributes object and set its color matrix.       Ia = new ImageAttributes();       Ia.SetColorMatrix( cm, ColorMatrixFlag.Default,                                ColorAdjustType.Bitmap);       TLBMP.RotateFlip(RotateFlipType.Rotate90FlipNone);       TRBMP.RotateFlip(RotateFlipType.Rotate90FlipNone);       BLBMP.RotateFlip(RotateFlipType.Rotate90FlipNone);       BRBMP.RotateFlip(RotateFlipType.Rotate90FlipNone);       Invalidate();     }     } }                     BitMapExt-c.zip( 8 k)