<?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%2FCurve</id>
		<title>Csharp/C Sharp/2D Graphics/Curve - История изменений</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%2FCurve"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Curve&amp;action=history"/>
		<updated>2026-04-29T20:21:27Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/2D_Graphics/Curve&amp;diff=907&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/Curve&amp;diff=907&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/Curve&amp;diff=908&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/Curve&amp;diff=908&amp;oldid=prev"/>
				<updated>2010-05-26T11:42:17Z</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;==Bezier (Mouse Defines Control Points)==&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.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class Bezier: Form&lt;br /&gt;
{&lt;br /&gt;
     protected Point[] apt = new Point[4];&lt;br /&gt;
   &lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new Bezier());&lt;br /&gt;
     }&lt;br /&gt;
     public Bezier()&lt;br /&gt;
     {&lt;br /&gt;
          ResizeRedraw = true;&lt;br /&gt;
   &lt;br /&gt;
          OnResize(EventArgs.Empty);&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnResize(EventArgs ea)&lt;br /&gt;
     {&lt;br /&gt;
          base.OnResize(ea);&lt;br /&gt;
   &lt;br /&gt;
          int cx = ClientSize.Width;&lt;br /&gt;
          int cy = ClientSize.Height;&lt;br /&gt;
   &lt;br /&gt;
          apt[0] = new Point(    cx / 4,     cy / 2);&lt;br /&gt;
          apt[1] = new Point(    cx / 2,     cy / 4);&lt;br /&gt;
          apt[2] = new Point(    cx / 2, 3 * cy / 4);&lt;br /&gt;
          apt[3] = new Point(3 * cx / 4,     cy / 2);&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnMouseDown(MouseEventArgs mea)&lt;br /&gt;
     {&lt;br /&gt;
          Point pt;&lt;br /&gt;
   &lt;br /&gt;
          if (mea.Button == MouseButtons.Left)&lt;br /&gt;
               pt = apt[1];&lt;br /&gt;
   &lt;br /&gt;
          else if (mea.Button == MouseButtons.Right)&lt;br /&gt;
               pt = apt[2];&lt;br /&gt;
   &lt;br /&gt;
          else&lt;br /&gt;
               return;&lt;br /&gt;
   &lt;br /&gt;
          Cursor.Position = PointToScreen(pt);&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnMouseMove(MouseEventArgs mea)&lt;br /&gt;
     {&lt;br /&gt;
          if (mea.Button == MouseButtons.Left)&lt;br /&gt;
          {&lt;br /&gt;
               apt[1] = new Point(mea.X, mea.Y);&lt;br /&gt;
               Invalidate();&lt;br /&gt;
          }&lt;br /&gt;
          else if (mea.Button == MouseButtons.Right)&lt;br /&gt;
          {&lt;br /&gt;
               apt[2] = new Point(mea.X, mea.Y);&lt;br /&gt;
               Invalidate();&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          Graphics grfx = pea.Graphics;&lt;br /&gt;
   &lt;br /&gt;
          grfx.DrawBeziers(new Pen(ForeColor), apt);&lt;br /&gt;
   &lt;br /&gt;
          Pen pen = new Pen(Color.FromArgb(0x80, ForeColor));&lt;br /&gt;
   &lt;br /&gt;
          grfx.DrawLine(pen, apt[0], apt[1]);&lt;br /&gt;
          grfx.DrawLine(pen, apt[2], apt[3]);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Click on the form to draw curve==&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.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.Drawing2D;&lt;br /&gt;
public class Form1 : System.Windows.Forms.Form{&lt;br /&gt;
   private Point[] thePoints;&lt;br /&gt;
   private int counter;&lt;br /&gt;
   public Form1() {&lt;br /&gt;
      Console.WriteLine(&amp;quot;click on the form to draw curve&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
      InitializeComponent();&lt;br /&gt;
      thePoints = new Point[1000];&lt;br /&gt;
      for (int i=0;i&amp;lt;thePoints.Length; i++)&lt;br /&gt;
         thePoints[i] = new Point(0,0);&lt;br /&gt;
      counter =0;&lt;br /&gt;
   }&lt;br /&gt;
   protected override void OnPaint (PaintEventArgs e) {&lt;br /&gt;
      if (counter==0) &lt;br /&gt;
         return;&lt;br /&gt;
      Pen redPen   = new Pen(Color.Red, 3);&lt;br /&gt;
      Pen greenPen = new Pen(Color.Red, 4);&lt;br /&gt;
      Point[] curvePoints = new Point[counter];&lt;br /&gt;
      &lt;br /&gt;
      for (int i=0; i&amp;lt;curvePoints.Length;i++)&lt;br /&gt;
      {&lt;br /&gt;
         curvePoints[i] = new Point(0,0);&lt;br /&gt;
         curvePoints[i].X = thePoints[i].X;&lt;br /&gt;
         curvePoints[i].Y = thePoints[i].Y;&lt;br /&gt;
      }&lt;br /&gt;
        &lt;br /&gt;
      e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;&lt;br /&gt;
      e.Graphics.DrawCurve(greenPen, curvePoints);&lt;br /&gt;
   }&lt;br /&gt;
   private void InitializeComponent() {&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.Name = &amp;quot;Form1&amp;quot;;&lt;br /&gt;
      this.Text = &amp;quot;Form1&amp;quot;;&lt;br /&gt;
      this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);&lt;br /&gt;
   }&lt;br /&gt;
   static void Main() {&lt;br /&gt;
      Application.Run(new Form1());&lt;br /&gt;
   }&lt;br /&gt;
   private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {&lt;br /&gt;
      thePoints[counter].X = e.X;&lt;br /&gt;
      thePoints[counter].Y = e.Y;&lt;br /&gt;
      Label l = new Label();&lt;br /&gt;
      this.SuspendLayout();&lt;br /&gt;
      counter++;&lt;br /&gt;
      if (counter&amp;gt;4)&lt;br /&gt;
        this.Refresh();&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;
==Draw closed curve==&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.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.Drawing2D;&lt;br /&gt;
public class Form1 : System.Windows.Forms.Form{&lt;br /&gt;
   private Point[] thePoints;&lt;br /&gt;
   private int counter;&lt;br /&gt;
   public Form1() {&lt;br /&gt;
      Console.WriteLine(&amp;quot;click on the form to draw closed curve.&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
      InitializeComponent();&lt;br /&gt;
      thePoints = new Point[1000];&lt;br /&gt;
      for (int i=0;i&amp;lt;thePoints.Length; i++)&lt;br /&gt;
         thePoints[i] = new Point(0,0);&lt;br /&gt;
      counter =0;&lt;br /&gt;
   }&lt;br /&gt;
   protected override void OnPaint (PaintEventArgs e) {&lt;br /&gt;
      if (counter==0) &lt;br /&gt;
         return;&lt;br /&gt;
      Pen redPen   = new Pen(Color.Red, 3);&lt;br /&gt;
      Pen greenPen = new Pen(Color.Red, 4);&lt;br /&gt;
      Point[] curvePoints = new Point[counter];&lt;br /&gt;
      &lt;br /&gt;
      for (int i=0; i&amp;lt;curvePoints.Length;i++)&lt;br /&gt;
      {&lt;br /&gt;
         curvePoints[i] = new Point(0,0);&lt;br /&gt;
         curvePoints[i].X = thePoints[i].X;&lt;br /&gt;
         curvePoints[i].Y = thePoints[i].Y;&lt;br /&gt;
      }&lt;br /&gt;
        &lt;br /&gt;
      e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;&lt;br /&gt;
      e.Graphics.DrawClosedCurve(greenPen, curvePoints);&lt;br /&gt;
   }&lt;br /&gt;
   private void InitializeComponent() {&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.Name = &amp;quot;Form1&amp;quot;;&lt;br /&gt;
      this.Text = &amp;quot;Form1&amp;quot;;&lt;br /&gt;
      this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);&lt;br /&gt;
   }&lt;br /&gt;
   static void Main() {&lt;br /&gt;
      Application.Run(new Form1());&lt;br /&gt;
   }&lt;br /&gt;
   private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {&lt;br /&gt;
      thePoints[counter].X = e.X;&lt;br /&gt;
      thePoints[counter].Y = e.Y;&lt;br /&gt;
      Label l = new Label();&lt;br /&gt;
      this.SuspendLayout();&lt;br /&gt;
      counter++;&lt;br /&gt;
      if (counter&amp;gt;4)&lt;br /&gt;
        this.Refresh();&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;
==Ellipse with DrawLines==&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.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class PolyEllipse: Form&lt;br /&gt;
{&lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new PolyEllipse());&lt;br /&gt;
     }&lt;br /&gt;
     public PolyEllipse()&lt;br /&gt;
     {&lt;br /&gt;
          Text = &amp;quot;Ellipse with DrawLines&amp;quot;;&lt;br /&gt;
          ResizeRedraw = true;&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);&lt;br /&gt;
     }     &lt;br /&gt;
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)&lt;br /&gt;
     {&lt;br /&gt;
          int      iNum = 2 * (cx + cy);&lt;br /&gt;
          PointF[] aptf = new PointF[iNum];&lt;br /&gt;
   &lt;br /&gt;
          for (int i = 0; i &amp;lt; iNum; i++)&lt;br /&gt;
          {&lt;br /&gt;
               double dAng = i * 2 * Math.PI / (iNum - 1);&lt;br /&gt;
   &lt;br /&gt;
               aptf[i].X = (cx - 1) / 2f * (1 + (float)Math.Cos(dAng));&lt;br /&gt;
               aptf[i].Y = (cy - 1) / 2f * (1 + (float)Math.Sin(dAng));&lt;br /&gt;
          }&lt;br /&gt;
          grfx.DrawLines(new Pen(clr), aptf);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sine Curve==&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.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class SineCurve: Form&lt;br /&gt;
{&lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new SineCurve());&lt;br /&gt;
     }&lt;br /&gt;
     public SineCurve()&lt;br /&gt;
     {&lt;br /&gt;
          Text = &amp;quot;Sine Curve&amp;quot;;&lt;br /&gt;
          ResizeRedraw = true;&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);&lt;br /&gt;
     }&lt;br /&gt;
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)&lt;br /&gt;
     {&lt;br /&gt;
          PointF[] aptf = new PointF[cx];&lt;br /&gt;
   &lt;br /&gt;
          for (int i = 0; i &amp;lt; cx; i++)&lt;br /&gt;
          {&lt;br /&gt;
               aptf[i].X = i;&lt;br /&gt;
               aptf[i].Y = cy / 2 * (1 -(float) &lt;br /&gt;
                                   Math.Sin(i * 2 * Math.PI / (cx - 1)));&lt;br /&gt;
          }&lt;br /&gt;
          grfx.DrawLines(new Pen(clr), aptf);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Spiral==&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.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class Spiral: Form&lt;br /&gt;
{&lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new Spiral());&lt;br /&gt;
     }&lt;br /&gt;
     public Spiral()&lt;br /&gt;
     {&lt;br /&gt;
          ResizeRedraw = true;&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          DoPage(pea.Graphics, ForeColor,ClientSize.Width, ClientSize.Height);&lt;br /&gt;
     }&lt;br /&gt;
     protected void DoPage(Graphics grfx, Color clr, int cx, int cy)&lt;br /&gt;
     {&lt;br /&gt;
          const int iNumRevs   = 20;&lt;br /&gt;
          int       iNumPoints = iNumRevs * 2 * (cx + cy);&lt;br /&gt;
          PointF[]  aptf       = new PointF[iNumPoints];&lt;br /&gt;
          float     fAngle, fScale;&lt;br /&gt;
   &lt;br /&gt;
          for (int i = 0; i &amp;lt; iNumPoints; i++)&lt;br /&gt;
          {&lt;br /&gt;
               fAngle = (float)(i * 2 * Math.PI /(iNumPoints / iNumRevs));&lt;br /&gt;
               fScale = 1 - (float)i / iNumPoints;&lt;br /&gt;
   &lt;br /&gt;
               aptf[i].X = (float)(cx / 2 * (1 + fScale * Math.Cos(fAngle)));&lt;br /&gt;
               aptf[i].Y = (float)(cy / 2 * (1 + fScale * Math.Sin(fAngle)));&lt;br /&gt;
          }&lt;br /&gt;
          grfx.DrawLines(new Pen(clr), aptf);&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>