<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2F2D_Graphics%2FTransform</id>
		<title>Csharp/C Sharp/2D Graphics/Transform - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2F2D_Graphics%2FTransform"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Transform&amp;action=history"/>
		<updated>2026-04-29T21:21:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Transform&amp;diff=869&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Transform&amp;diff=869&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Transform&amp;diff=870&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Transform&amp;diff=870&amp;oldid=prev"/>
				<updated>2010-05-26T11:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Add a translation to the existing transformation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  using System;&lt;br /&gt;
  using System.Drawing;&lt;br /&gt;
  using System.Drawing.Drawing2D;&lt;br /&gt;
  using System.Collections;&lt;br /&gt;
  using System.ruponentModel;&lt;br /&gt;
  using System.Windows.Forms;&lt;br /&gt;
  using System.Data;&lt;br /&gt;
  using System.Drawing.Imaging;&lt;br /&gt;
  public class Form1 : System.Windows.Forms.Form&lt;br /&gt;
  {&lt;br /&gt;
    public Form1()&lt;br /&gt;
    {&lt;br /&gt;
      InitializeComponent();&lt;br /&gt;
    }&lt;br /&gt;
    private void InitializeComponent()&lt;br /&gt;
    {&lt;br /&gt;
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
      this.ClientSize = new System.Drawing.Size(292, 273);&lt;br /&gt;
      this.Text = &amp;quot;&amp;quot;;&lt;br /&gt;
      this.Resize += new System.EventHandler(this.Form1_Resize);&lt;br /&gt;
      this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);&lt;br /&gt;
    }&lt;br /&gt;
    static void Main() &lt;br /&gt;
    {&lt;br /&gt;
      Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;
    {      &lt;br /&gt;
      Graphics g = e.Graphics;&lt;br /&gt;
      g.FillRectangle(Brushes.White, this.ClientRectangle);&lt;br /&gt;
      for (int i = 1; i &amp;lt;= 10; ++i)&lt;br /&gt;
      {&lt;br /&gt;
        // First, draw a rectangle with the current translation&lt;br /&gt;
        g.DrawRectangle(Pens.Black, 10, 10, 30, 50);&lt;br /&gt;
        // Add a translation to the existing transformation&lt;br /&gt;
        g.TranslateTransform(20, 10);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Resize(object sender, System.EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
      Invalidate();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reset the transformation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  using System;&lt;br /&gt;
  using System.Drawing;&lt;br /&gt;
  using System.Drawing.Drawing2D;&lt;br /&gt;
  using System.Collections;&lt;br /&gt;
  using System.ruponentModel;&lt;br /&gt;
  using System.Windows.Forms;&lt;br /&gt;
  using System.Data;&lt;br /&gt;
  using System.Drawing.Imaging;&lt;br /&gt;
  public class Form1 : System.Windows.Forms.Form&lt;br /&gt;
  {&lt;br /&gt;
    public Form1()&lt;br /&gt;
    {&lt;br /&gt;
      InitializeComponent();&lt;br /&gt;
    }&lt;br /&gt;
    private void InitializeComponent()&lt;br /&gt;
    {&lt;br /&gt;
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
      this.ClientSize = new System.Drawing.Size(292, 273);&lt;br /&gt;
      this.Text = &amp;quot;&amp;quot;;&lt;br /&gt;
      this.Resize += new System.EventHandler(this.Form1_Resize);&lt;br /&gt;
      this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);&lt;br /&gt;
    }&lt;br /&gt;
    static void Main() &lt;br /&gt;
    {&lt;br /&gt;
      Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;
    {      &lt;br /&gt;
      Graphics g = e.Graphics;&lt;br /&gt;
      g.FillRectangle(Brushes.White, ClientRectangle);&lt;br /&gt;
      g.DrawEllipse(Pens.Black, 20, 20, 30, 50);&lt;br /&gt;
      // Translate by -15 pixels in horizontal direction&lt;br /&gt;
      g.TranslateTransform(-15, 0);&lt;br /&gt;
      g.DrawEllipse(Pens.Red, 20, 20, 30, 50);&lt;br /&gt;
      // Reset the transformation&lt;br /&gt;
      // Translate by 30 pixels in vertical direction&lt;br /&gt;
      g.ResetTransform();&lt;br /&gt;
      g.TranslateTransform(0, 30);&lt;br /&gt;
      g.DrawEllipse(Pens.Blue, 20, 20, 30, 50);&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Resize(object sender, System.EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
      Invalidate();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rotate Transform==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
User Interfaces in C#: Windows Forms and Custom Controls&lt;br /&gt;
by Matthew MacDonald&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
ISBN: 1590590457&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Text;&lt;br /&gt;
namespace GDI_Basics&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    /// Summary description for RotateTransform.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    public class RotateTransform : System.Windows.Forms.Form&lt;br /&gt;
    {&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required designer variable.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private System.ruponentModel.Container components = null;&lt;br /&gt;
        public RotateTransform()&lt;br /&gt;
        {&lt;br /&gt;
            //&lt;br /&gt;
            // Required for Windows Form Designer support&lt;br /&gt;
            //&lt;br /&gt;
            InitializeComponent();&lt;br /&gt;
            //&lt;br /&gt;
            // TODO: Add any constructor code after InitializeComponent call&lt;br /&gt;
            //&lt;br /&gt;
        }&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Clean up any resources being used.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        protected override void Dispose( bool disposing )&lt;br /&gt;
        {&lt;br /&gt;
            if( disposing )&lt;br /&gt;
            {&lt;br /&gt;
                if(components != null)&lt;br /&gt;
                {&lt;br /&gt;
                    components.Dispose();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            base.Dispose( disposing );&lt;br /&gt;
        }&lt;br /&gt;
        #region Windows Form Designer generated code&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required method for Designer support - do not modify&lt;br /&gt;
        /// the contents of this method with the code editor.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private void InitializeComponent()&lt;br /&gt;
        {&lt;br /&gt;
            // &lt;br /&gt;
            // RotateTransform&lt;br /&gt;
            // &lt;br /&gt;
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
            this.ClientSize = new System.Drawing.Size(292, 266);&lt;br /&gt;
            this.Name = &amp;quot;RotateTransform&amp;quot;;&lt;br /&gt;
            this.Text = &amp;quot;RotateTransform&amp;quot;;&lt;br /&gt;
            this.Paint += new System.Windows.Forms.PaintEventHandler(this.RotateTransform_Paint);&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        [STAThread]&lt;br /&gt;
        static void Main() &lt;br /&gt;
        {&lt;br /&gt;
            Application.Run(new RotateTransform());&lt;br /&gt;
        }&lt;br /&gt;
        private void RotateTransform_Paint(object sender, System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            // Optimize text quality.&lt;br /&gt;
            e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;&lt;br /&gt;
            // Move origin to center of form so we can rotate around that.&lt;br /&gt;
            e.Graphics.TranslateTransform(this.Width / 2 - 30, this.Height / 2 - 30);&lt;br /&gt;
            DrawText(e.Graphics);&lt;br /&gt;
            e.Graphics.RotateTransform(45);&lt;br /&gt;
            DrawText(e.Graphics);&lt;br /&gt;
            e.Graphics.RotateTransform(75);&lt;br /&gt;
            DrawText(e.Graphics);&lt;br /&gt;
            e.Graphics.RotateTransform(160);&lt;br /&gt;
            DrawText(e.Graphics);&lt;br /&gt;
        }&lt;br /&gt;
        private void DrawText(Graphics g)&lt;br /&gt;
        {&lt;br /&gt;
            g.DrawString(&amp;quot;Text&amp;quot;, new Font(&amp;quot;Verdana&amp;quot;, 30, FontStyle.Bold), &lt;br /&gt;
                Brushes.Black, 0, 10);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Shape and Transform==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
GDI+ Programming in C# and VB .NET&lt;br /&gt;
by Nick Symmonds&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
ISBN: 159059035X&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Drawing2D;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Data;&lt;br /&gt;
namespace GraphicsDraw_c&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    /// Summary description for GraphicsDraw.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    public class GraphicsDraw : System.Windows.Forms.Form&lt;br /&gt;
    {&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required designer variable.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private System.ruponentModel.Container components = null;&lt;br /&gt;
        public GraphicsDraw()&lt;br /&gt;
        {&lt;br /&gt;
            //&lt;br /&gt;
            // Required for Windows Form Designer support&lt;br /&gt;
            //&lt;br /&gt;
            InitializeComponent();&lt;br /&gt;
            //&lt;br /&gt;
            // TODO: Add any constructor code after InitializeComponent call&lt;br /&gt;
            //&lt;br /&gt;
        }&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Clean up any resources being used.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        protected override void Dispose( bool disposing )&lt;br /&gt;
        {&lt;br /&gt;
            if( disposing )&lt;br /&gt;
            {&lt;br /&gt;
                if (components != null) &lt;br /&gt;
                {&lt;br /&gt;
                    components.Dispose();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            base.Dispose( disposing );&lt;br /&gt;
        }&lt;br /&gt;
        #region Windows Form Designer generated code&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required method for Designer support - do not modify&lt;br /&gt;
        /// the contents of this method with the code editor.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private void InitializeComponent()&lt;br /&gt;
        {&lt;br /&gt;
      // &lt;br /&gt;
      // GraphicsDraw&lt;br /&gt;
      // &lt;br /&gt;
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
      this.ClientSize = new System.Drawing.Size(504, 629);&lt;br /&gt;
      this.Name = &amp;quot;GraphicsDraw&amp;quot;;&lt;br /&gt;
      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;&lt;br /&gt;
      this.Text = &amp;quot;GraphicsDraw&amp;quot;;&lt;br /&gt;
      this.Load += new System.EventHandler(this.GraphicsDraw_Load);&lt;br /&gt;
    }&lt;br /&gt;
        #endregion&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// The main entry point for the application.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        [STAThread]&lt;br /&gt;
        static void Main() &lt;br /&gt;
        {&lt;br /&gt;
            Application.Run(new GraphicsDraw());&lt;br /&gt;
        }&lt;br /&gt;
    private void GraphicsDraw_Load(object sender, System.EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    protected override void OnPaint(PaintEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
      Rectangle R1 = new Rectangle(10, 10, 40, 40);&lt;br /&gt;
      e.Graphics.SmoothingMode=SmoothingMode.HighQuality;&lt;br /&gt;
      e.Graphics.DrawRectangle(Pens.Black,R1);&lt;br /&gt;
      e.Graphics.TranslateTransform(50.0F, 0.0F);&lt;br /&gt;
      e.Graphics.FillRectangle(Brushes.Black,R1);&lt;br /&gt;
      //Draw three rectangles&lt;br /&gt;
      Rectangle[] ThreeRects = {new Rectangle(110, 10, 40, 40), &lt;br /&gt;
                                new Rectangle(160, 10, 40, 40), &lt;br /&gt;
                                new Rectangle(210, 10, 40, 40)};&lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.DrawRectangles(Pens.Red, ThreeRects);&lt;br /&gt;
      //Draw three filled rectangles&lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.TranslateTransform(100.0F, 0.0F);&lt;br /&gt;
      e.Graphics.FillRectangles(Brushes.Red, ThreeRects);&lt;br /&gt;
&lt;br /&gt;
      //Use first rect to bound ellipse as circle&lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.TranslateTransform(0.0F, 50.0F);&lt;br /&gt;
      e.Graphics.DrawEllipse(Pens.Green,R1);&lt;br /&gt;
      //Draw a filled ellipse&lt;br /&gt;
      e.Graphics.TranslateTransform(50.0F, 0.0F);&lt;br /&gt;
      e.Graphics.FillEllipse(Brushes.Green,R1);&lt;br /&gt;
      //Use first rect to bound pie &lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.TranslateTransform(100.0F, 50.0F);&lt;br /&gt;
      e.Graphics.DrawPie(Pens.DarkViolet, R1, 0, 60);&lt;br /&gt;
      //Use first rect to fill pie &lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.TranslateTransform(150.0F, 50.0F);&lt;br /&gt;
      e.Graphics.FillPie(Brushes.DarkViolet, R1, 0, 60);&lt;br /&gt;
      //Use first rect to bound arc &lt;br /&gt;
      e.Graphics.ResetTransform();&lt;br /&gt;
      e.Graphics.TranslateTransform(200.0F, 50.0F);&lt;br /&gt;
      e.Graphics.DrawArc(Pens.DarkBlue, R1, 40, 160);&lt;br /&gt;
      PointDraw ( e.Graphics );&lt;br /&gt;
      PathDraw ( e.Graphics );&lt;br /&gt;
   }&lt;br /&gt;
    private void PointDraw( Graphics G )&lt;br /&gt;
    {&lt;br /&gt;
      //Start with clean slate&lt;br /&gt;
      G.ResetClip();&lt;br /&gt;
      G.ResetTransform();&lt;br /&gt;
      //Separate sections&lt;br /&gt;
      G.DrawLine(Pens.Black,10,110,this.Width-10,110);&lt;br /&gt;
      //------------ Draw Line -----------------------&lt;br /&gt;
      //Generate start and end points&lt;br /&gt;
      Point StartPt = new Point(10,130);&lt;br /&gt;
      Point EndPt = new Point(200,130);&lt;br /&gt;
      Pen P = new Pen(Brushes.CadetBlue, 5);&lt;br /&gt;
      G.DrawLine(P, StartPt, EndPt);&lt;br /&gt;
      //------------- Draw lines ----------------------&lt;br /&gt;
      //Translate in the Y Direction&lt;br /&gt;
      Size Xlate_Y = new Size(0,40);&lt;br /&gt;
      //Translate in the X Direction&lt;br /&gt;
      Size Xlate_X = new Size(200,0);&lt;br /&gt;
      Point Pt = StartPt;&lt;br /&gt;
      //Generate set of points based on offsets of original point&lt;br /&gt;
      Point[] ManyPoints = { (Pt + Xlate_X), &lt;br /&gt;
                             (Pt = Pt + Xlate_X + Xlate_Y), &lt;br /&gt;
                             (Pt = Pt + Xlate_X) };&lt;br /&gt;
      P.Color=Color.Firebrick;&lt;br /&gt;
      G.DrawLines(P, ManyPoints);&lt;br /&gt;
      //------------ DrawBezier and Polygon -------------------&lt;br /&gt;
      StartPt.X=10;&lt;br /&gt;
      StartPt.Y=250;&lt;br /&gt;
      Point CtlPtA = new Point(50,150);&lt;br /&gt;
      Point CtlPtB = new Point(350,300);&lt;br /&gt;
      EndPt.X=400;&lt;br /&gt;
      EndPt.Y=250;&lt;br /&gt;
      Point[] PolyPoints = { StartPt, CtlPtA, EndPt, CtlPtB };&lt;br /&gt;
      //Draw the controlling shape of the Bezier spline&lt;br /&gt;
      G.DrawPolygon ( Pens.DarkSeaGreen, PolyPoints );&lt;br /&gt;
      //Draw the actual Spline&lt;br /&gt;
      P.Color=Color.DarkSeaGreen;&lt;br /&gt;
      P.Width=3;&lt;br /&gt;
      G.DrawBezier( P, StartPt, CtlPtA, CtlPtB, EndPt );&lt;br /&gt;
      //---------- Draw two Bezier splines ---------------------&lt;br /&gt;
      Size Y = new Size(0,40);&lt;br /&gt;
      Size X = new Size(20,0);&lt;br /&gt;
      //Y Translated start of first spline&lt;br /&gt;
      //Same control points for first spline,&lt;br /&gt;
      //X,Y Translated end of first spline, &lt;br /&gt;
      //X Translate control points for second spline,&lt;br /&gt;
      //X,Y New end point for second spline&lt;br /&gt;
      Point[] TwoSplines = { StartPt+Y, &lt;br /&gt;
                             CtlPtA, &lt;br /&gt;
                             CtlPtB, &lt;br /&gt;
                             EndPt+Y-new Size(200,0), &lt;br /&gt;
                             CtlPtA+X, &lt;br /&gt;
                             CtlPtB+X, &lt;br /&gt;
                             EndPt+Y+X };&lt;br /&gt;
      P.Color=Color.Gold;&lt;br /&gt;
      G.DrawBeziers (P, TwoSplines);&lt;br /&gt;
      //---------- Draw a closed curve -----------&lt;br /&gt;
      PolyPoints[0] = new Point(100, 350);&lt;br /&gt;
      PolyPoints[1] = new Point(250, 300);&lt;br /&gt;
      PolyPoints[2] = new Point(250, 400);&lt;br /&gt;
      PolyPoints[3] = new Point(150, 400);&lt;br /&gt;
      P.Color=Color.Olive;&lt;br /&gt;
      //Curve traces outside of polygon&lt;br /&gt;
      //Curve is closed cardinal spline &amp;amp; hits all points&lt;br /&gt;
      G.DrawPolygon (P, PolyPoints);&lt;br /&gt;
      G.DrawClosedCurve(P,PolyPoints);&lt;br /&gt;
      //Uncomment next line to fill the egg shape&lt;br /&gt;
      // G.FillClosedCurve(Brushes.AliceBlue,PolyPoints);&lt;br /&gt;
      //---------- Draw an open cardinal curve -----------&lt;br /&gt;
      Point[] CardPoints = { new Point( 310, 350 ),&lt;br /&gt;
                             new Point( 330, 360 ),&lt;br /&gt;
                             new Point( 360, 320 ),&lt;br /&gt;
                             new Point( 390, 370 ),&lt;br /&gt;
                             new Point( 400, 350 ),&lt;br /&gt;
                             new Point( 480, 340 )};&lt;br /&gt;
      P.Color=Color.DarkOrange;&lt;br /&gt;
      G.DrawCurve(P, CardPoints);&lt;br /&gt;
      P.Dispose();&lt;br /&gt;
    }&lt;br /&gt;
    private void PathDraw( Graphics G )&lt;br /&gt;
    {&lt;br /&gt;
      //Start with clean slate&lt;br /&gt;
      G.ResetClip();&lt;br /&gt;
      G.ResetTransform();&lt;br /&gt;
      //Separate sections&lt;br /&gt;
      G.DrawLine(Pens.Black, 10, 420, this.Width-10, 420);&lt;br /&gt;
      //Make a blank path and add shapes to it&lt;br /&gt;
      GraphicsPath gp = new GraphicsPath();&lt;br /&gt;
      Pen P = new Pen(Brushes.ForestGreen,3);&lt;br /&gt;
      gp.AddRectangle(new Rectangle(10, 450, 100, 100));&lt;br /&gt;
      gp.AddEllipse(120, 450, 100, 100);&lt;br /&gt;
      gp.AddPie ( 70, 500, 100, 100, 25, 120 );&lt;br /&gt;
      //Draw the outline of the path and fill it in&lt;br /&gt;
      G.DrawPath (P, gp );&lt;br /&gt;
      G.FillPath(Brushes.Bisque,gp);&lt;br /&gt;
      P.Dispose();&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Translate the text 150 pixels horizontally and 75 vertically==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
  using System;&lt;br /&gt;
  using System.Drawing;&lt;br /&gt;
  using System.Drawing.Drawing2D;&lt;br /&gt;
  using System.Collections;&lt;br /&gt;
  using System.ruponentModel;&lt;br /&gt;
  using System.Windows.Forms;&lt;br /&gt;
  using System.Data;&lt;br /&gt;
  using System.Drawing.Imaging;&lt;br /&gt;
  public class Form1 : System.Windows.Forms.Form&lt;br /&gt;
  {&lt;br /&gt;
    public Form1()&lt;br /&gt;
    {&lt;br /&gt;
      InitializeComponent();&lt;br /&gt;
    }&lt;br /&gt;
    private void InitializeComponent()&lt;br /&gt;
    {&lt;br /&gt;
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
      this.ClientSize = new System.Drawing.Size(292, 273);&lt;br /&gt;
      this.Text = &amp;quot;&amp;quot;;&lt;br /&gt;
      this.Resize += new System.EventHandler(this.Form1_Resize);&lt;br /&gt;
      this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);&lt;br /&gt;
    }&lt;br /&gt;
    static void Main() &lt;br /&gt;
    {&lt;br /&gt;
      Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;
    {      &lt;br /&gt;
      Graphics g = e.Graphics;&lt;br /&gt;
      g.FillRectangle(Brushes.White, this.ClientRectangle);&lt;br /&gt;
      Font f = new Font(&amp;quot;Times New Roman&amp;quot;, 24);&lt;br /&gt;
      // Draw text to the surface&lt;br /&gt;
      g.DrawString(&amp;quot;www.nfex.ru&amp;quot;, f, Brushes.Black, 0, 0);&lt;br /&gt;
      // Translate the text 150 pixels horizontally and 75 vertically&lt;br /&gt;
      g.TranslateTransform(150, 75);&lt;br /&gt;
      // Draw the translated text&lt;br /&gt;
      g.DrawString(&amp;quot;www.nfex.ru&amp;quot;, f, Brushes.Black, 0, 0);&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Resize(object sender, System.EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
      Invalidate();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Translate Transform==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
User Interfaces in C#: Windows Forms and Custom Controls&lt;br /&gt;
by Matthew MacDonald&lt;br /&gt;
Publisher: Apress&lt;br /&gt;
ISBN: 1590590457&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Drawing2D;&lt;br /&gt;
namespace GDI_Basics&lt;br /&gt;
{&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    /// Summary description for TranslateTransform.&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    public class TranslateTransform : System.Windows.Forms.Form&lt;br /&gt;
    {&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required designer variable.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private System.ruponentModel.Container components = null;&lt;br /&gt;
        public TranslateTransform()&lt;br /&gt;
        {&lt;br /&gt;
            //&lt;br /&gt;
            // Required for Windows Form Designer support&lt;br /&gt;
            //&lt;br /&gt;
            InitializeComponent();&lt;br /&gt;
            //&lt;br /&gt;
            // TODO: Add any constructor code after InitializeComponent call&lt;br /&gt;
            //&lt;br /&gt;
        }&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Clean up any resources being used.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        protected override void Dispose( bool disposing )&lt;br /&gt;
        {&lt;br /&gt;
            if( disposing )&lt;br /&gt;
            {&lt;br /&gt;
                if(components != null)&lt;br /&gt;
                {&lt;br /&gt;
                    components.Dispose();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            base.Dispose( disposing );&lt;br /&gt;
        }&lt;br /&gt;
        #region Windows Form Designer generated code&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Required method for Designer support - do not modify&lt;br /&gt;
        /// the contents of this method with the code editor.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private void InitializeComponent()&lt;br /&gt;
        {&lt;br /&gt;
            // &lt;br /&gt;
            // TranslateTransform&lt;br /&gt;
            // &lt;br /&gt;
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
            this.ClientSize = new System.Drawing.Size(292, 266);&lt;br /&gt;
            this.Name = &amp;quot;TranslateTransform&amp;quot;;&lt;br /&gt;
            this.Text = &amp;quot;TranslateTransform&amp;quot;;&lt;br /&gt;
            this.Paint += new System.Windows.Forms.PaintEventHandler(this.TranslateTransform_Paint);&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
        private void TranslateTransform_Paint(object sender, System.Windows.Forms.PaintEventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            // Draw several squares in different places.&lt;br /&gt;
            DrawRectangle(e.Graphics);&lt;br /&gt;
            e.Graphics.TranslateTransform(180, 60);&lt;br /&gt;
            DrawRectangle(e.Graphics);&lt;br /&gt;
            e.Graphics.TranslateTransform(-50, 80);&lt;br /&gt;
            DrawRectangle(e.Graphics);&lt;br /&gt;
            e.Graphics.TranslateTransform(-100, 50);&lt;br /&gt;
            DrawRectangle(e.Graphics);&lt;br /&gt;
        }&lt;br /&gt;
        private void DrawRectangle(Graphics g)&lt;br /&gt;
        {&lt;br /&gt;
            Pen drawingPen = new Pen(Color.Red, 30);&lt;br /&gt;
            // Draw a rectangle at a fixed position.&lt;br /&gt;
            g.DrawRectangle(drawingPen, new Rectangle(20, 20, 20, 20));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        [STAThread]&lt;br /&gt;
        static void Main() &lt;br /&gt;
        {&lt;br /&gt;
            Application.Run(new TranslateTransform());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Translate Transform three times==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Windows.Forms.VisualStyles;&lt;br /&gt;
using System.Drawing.Drawing2D;&lt;br /&gt;
using System.Drawing.Text;&lt;br /&gt;
public class Form1 : Form&lt;br /&gt;
{&lt;br /&gt;
      public Form1() {&lt;br /&gt;
            InitializeComponent();&lt;br /&gt;
      }&lt;br /&gt;
    private void SimpleStyleRenderer_Paint(object sender, PaintEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
      e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;&lt;br /&gt;
      DrawRectangle(e.Graphics);&lt;br /&gt;
      e.Graphics.TranslateTransform(180, 60);&lt;br /&gt;
      DrawRectangle(e.Graphics);&lt;br /&gt;
      e.Graphics.TranslateTransform(-50, 80);&lt;br /&gt;
      DrawRectangle(e.Graphics);&lt;br /&gt;
      e.Graphics.TranslateTransform(-100, 50);&lt;br /&gt;
      DrawRectangle(e.Graphics);&lt;br /&gt;
    }&lt;br /&gt;
    private void DrawRectangle(Graphics g)&lt;br /&gt;
    {&lt;br /&gt;
      Pen drawingPen = new Pen(Color.Red, 30);&lt;br /&gt;
      g.DrawRectangle(drawingPen, new Rectangle(20, 20, 20, 20));&lt;br /&gt;
    }&lt;br /&gt;
    private void InitializeComponent()&lt;br /&gt;
    {&lt;br /&gt;
      this.SuspendLayout();&lt;br /&gt;
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
      this.ClientSize = new System.Drawing.Size(600, 600);&lt;br /&gt;
      this.Name = &amp;quot;SimpleStyleRenderer&amp;quot;;&lt;br /&gt;
      this.Text = &amp;quot;SimpleStyleRenderer&amp;quot;;&lt;br /&gt;
      this.Paint += new System.Windows.Forms.PaintEventHandler(this.SimpleStyleRenderer_Paint);&lt;br /&gt;
      this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
      [STAThread]&lt;br /&gt;
      static void Main()&lt;br /&gt;
      {&lt;br /&gt;
        Application.EnableVisualStyles();&lt;br /&gt;
        Application.Run(new Form1());&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>