Csharp/C Sharp/2D Graphics/Scrolling

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

Draw Pyramid

<source lang="csharp"> /* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,

  Zach Greenvoss, Shripad Kulkarni, Neil Whitlow

Publisher: Peer Information ISBN: 1861007663

  • /

using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; using System.Drawing.Drawing2D; namespace Pyramid {

   /// <summary>
   /// Summary description for Pyramid.
   /// </summary>
   public class Pyramid1 : System.Windows.Forms.Form
   {
       private System.Windows.Forms.Button button1;
       /// <summary>
       /// Required designer variable.
       /// </summary>
       private System.ruponentModel.Container components = null;
       int rot = 0;
       Point center = new Point(125, 100);
       public Pyramid1()
       {
           //
           // Required for Windows Form Designer support
           //
           InitializeComponent();
           
           this.Text = "Pyramid by Transfomation";
           //
           // TODO: Add any constructor code after InitializeComponent call
           //
       }
       /// <summary>
       /// Clean up any resources being used.
       /// </summary>
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (components != null) 
               {
                   components.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.button1 = new System.Windows.Forms.Button();
           this.SuspendLayout();
           // 
           // button1
           // 
           this.button1.Location = new System.Drawing.Point(8, 8);
           this.button1.Name = "button1";
           this.button1.Size = new System.Drawing.Size(48, 24);
           this.button1.TabIndex = 0;
           this.button1.Text = "Rotate";
           this.button1.Click += new System.EventHandler(this.button1_Click);
           // 
           // Pyramid
           // 
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(292, 266);
           this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                         this.button1});
           this.Name = "Pyramid";
           this.Text = "Pyramid";
           this.ResumeLayout(false);
       }
       #endregion
       /// <summary>
       /// The main entry point for the application.
       /// </summary>
       [STAThread]
       static void Main() 
       {
           Application.Run(new Pyramid1());
       }
       protected override void OnPaint (System.Windows.Forms.PaintEventArgs e)
       {
           Graphics g = e.Graphics;    
           g.Clear(this.BackColor); 
           
           Pyramid(g);
           //PyramidPathRotate(g);
           g.Dispose();
       }
       protected void Pyramid(Graphics g) 
       {  
           Pen p = new Pen(Color.Blue);
           int ten = 10;
           Rectangle rc = new Rectangle(50, 90, 150, ten);  // the base rectangle
           g.DrawRectangle(p, rc);
           for(int i = 1;i <= 7; i++) 
           {
               rc.Offset(0,-ten);
               rc.Inflate(-ten, 0);
               g.DrawRectangle(p, rc);
           }
           p.Dispose();
       }
       private void button1_Click(object sender, System.EventArgs e)
       {

// rot++; // rot is a class member // PyramidPathRotate(CreateGraphics()); // Refresh();

       }
       protected void PyramidPathRotate(Graphics g) 
       {
           GraphicsPath gP = new GraphicsPath();  // create an empty path 
           Pen p = new Pen(Color.Blue);
           int ten = 10;
           Rectangle rc = new Rectangle(50, 90, 150, ten);  // the base rectangle
           gP.AddRectangle(rc);
           for(int i = 1;i <= 7; i++) 
           {
               rc.Offset(0,-ten);
               rc.Inflate(-ten,0);
               gP.AddRectangle(rc);
           }
           Matrix m = new Matrix();
           m.RotateAt(45*rot, center, MatrixOrder.Append);
           gP.Transform(m);
           g.DrawPath(p, gP);  // draw the rotated path
           g.FillEllipse(Brushes.Red, center.X, center.Y, 3, 3);  // center point
           p.Dispose();
       }
   }

}


      </source>


Scrolling Demo

<source lang="csharp"> /* Professional Windows GUI Programming Using C# by Jay Glynn, Csaba Torok, Richard Conway, Wahid Choudhury,

  Zach Greenvoss, Shripad Kulkarni, Neil Whitlow

Publisher: Peer Information ISBN: 1861007663

  • /

using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; namespace Scrolling {

   /// <summary>
   /// Summary description for Scrolling.
   /// </summary>
   public class Scrolling : System.Windows.Forms.Form
   {
       /// <summary>
       /// Required designer variable.
       /// </summary>
       private System.ruponentModel.Container components = null;
       public Scrolling()
       {
           //
           // Required for Windows Form Designer support
           //
           InitializeComponent();
           this.Text = "Scrolling";
           this.Size = new Size(210, 290);
           //
           // TODO: Add any constructor code after InitializeComponent call
           //
       }
       /// <summary>
       /// Clean up any resources being used.
       /// </summary>
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (components != null) 
               {
                   components.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()
       {
           // 
           // Scrolling
           // 
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(176, 254);
           this.Name = "Scrolling";
           this.Text = "Scrolling";
       }
       #endregion
       /// <summary>
       /// The main entry point for the application.
       /// </summary>
       [STAThread]
       static void Main() 
       {
           Application.Run(new Scrolling());
       }
       protected override void OnPaint(PaintEventArgs e)
       {
           Graphics g;
           g = Graphics.FromHwnd(this.Handle);
           GraphicsUnit units = GraphicsUnit.Pixel;
           string path = "MonetZsu.jpg";
           Image im = Image.FromFile(path);
           this.AutoScrollMinSize = new Size(im.Width, im.Height);
           //this.AutoScroll = true;
           Point P = this.AutoScrollPosition;
           Rectangle dstR = this.ClientRectangle;
           RectangleF srcR = new RectangleF(-P.X, -P.Y, dstR.Width, dstR.Height);
           g.DrawImage(im, dstR, srcR, units);
           g.Dispose();
       }
   }

}


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/P18_Scrolling.zip">P18_Scrolling.zip( 19 k)</a>