SSISO Community

갤러리정

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();
        }
        }
}

523 view

4.0 stars