Floating tool window
Floating tool window / tool strip with parent window’s title bar remain active all the time.
Download source code (Microsoft Visual C# 2005 Express Edition)

Floating tool window / tool strip with parent window’s title bar remain active all the time.
Download source code (Microsoft Visual C# 2005 Express Edition)

Download source code (Microsoft Visual C# 2005 Express Edition)
Download executable file

Note: This beta version only supports point, line and polygon.
Download source code (Microsoft Visual C# 2005 Express Edition)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace Tutorial6 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; PointF[] pt = new PointF[] { new PointF(50,50), new PointF(150,50), new PointF(200,100), new PointF(200,200), }; e.Graphics.DrawLines(Pens.Gray, pt); List<PointF> PointList = new List<PointF>(); float curDist = 0; float distance = 0; for (int i = 0; i < pt.Length - 1; i++) { PointF ptA = pt[i]; PointF ptB = pt[i + 1]; float deltaX = ptB.X - ptA.X; float deltaY = ptB.Y - ptA.Y; curDist = 0; distance = (float)Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2)); while (curDist < distance) { curDist++; float offsetX = (float)((double)curDist / (double)distance * (double)deltaX); float offsetY = (float)((double)curDist / (double)distance * (double)deltaY); PointList.Add(new PointF(ptA.X + offsetX, ptA.Y + offsetY)); } } for (int i = 0; i < PointList.Count - 24; i = i + 24) { drawWaveLine(e.Graphics, Pens.Black, PointList[i].X, PointList[i].Y, PointList[i + 24].X, PointList[i + 24].Y); } } public void drawWaveLine(Graphics g, Pen pen, float x1, float y1, float x2, float y2) { float angle = (float)((Math.Atan2(y2 - y1, x2 - x1) * 180 / 3.14159265)); g.TranslateTransform(x1, y1); g.RotateTransform(angle); GraphicsPath gp1 = new GraphicsPath(); Point[] p1 = new Point[] { new Point(0,0), new Point(3,-3), new Point(6,-4), new Point(9,-3), new Point(12,0), new Point(15,3), new Point(18,4), new Point(21,3), new Point(24,0) }; g.DrawLines(pen, p1); g.RotateTransform(-angle); g.TranslateTransform(-x1, -y1); } } }
Drawing lines pixel by pixel using timer so user can see the animation.
Download source code (Microsoft Visual C# 2005 Express Edition)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace WindowsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<PointF> PointList = new List<PointF>(); int pointIndex = 0; private void Form1_Load(object sender, EventArgs e) { SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); PointF[] pt = new PointF[] { new PointF(100, 100), new PointF(150, 150), new PointF(200, 100), new PointF(100, 100), }; // Get Points From Line(s) float curDist = 0; float distance = 0; for (int i = 0; i < pt.Length - 1; i++) { PointF ptA = pt[i]; PointF ptB = pt[i + 1]; float deltaX = ptB.X - ptA.X; float deltaY = ptB.Y - ptA.Y; curDist = 0; distance = (float)Math.Sqrt(Math.Pow(deltaX, 2) + Math.Pow(deltaY, 2)); while (curDist < distance) { curDist++; float offsetX = (float)((double)curDist / (double)distance * (double)deltaX); float offsetY = (float)((double)curDist / (double)distance * (double)deltaY); PointList.Add(new PointF(ptA.X + offsetX, ptA.Y + offsetY)); } } } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; for (int i = 0; i < pointIndex; i++) { e.Graphics.DrawLine(Pens.Black, PointList[i].X, PointList[i].Y, PointList[i + 1].X, PointList[i + 1].Y); } } private void timer1_Tick(object sender, EventArgs e) { if (pointIndex < PointList.Count - 1) { pointIndex++; this.Refresh(); } } } }
We will be using SharpZipLib which can be downloaded from
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
Click on the Download for Assemblies for .NET 1.1, .NET 2.0, .NET CF 1.0, .NET CF 2.0
Once you’ve downloaded the ZIP file, extract it and load the ICSharpCode.SharpZipLib.dll depends on the version of .NET you are using by going to Project > Add Reference > Browse.
The following code load the image Sunset.jpg from D:Sunset.zip and display in PictureBox1.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using ICSharpCode.SharpZipLib.Zip; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } FileStream fileStream; ZipFile zipFile; ZipEntry zipEntry; Stream stream; Bitmap bitmap; private void Form1_Load(object sender, EventArgs e) { fileStream = new FileStream("D:\Sunset.zip", FileMode.Open, FileAccess.Read); zipFile = new ZipFile(fileStream); zipEntry = zipFile.GetEntry("Sunset.jpg"); stream = zipFile.GetInputStream(zipEntry); bitmap = new Bitmap(stream); pictureBox1.Image = bitmap; } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.TranslateTransform(100, 100); e.Graphics.RotateTransform(45); e.Graphics.DrawString("Hello World", new Font("Arial", 20), Brushes.Red, new Point(0, 0), StringFormat.GenericDefault); } } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.DrawEllipse(Pens.Red, 50, 50, 100, 100); } } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Red, 50, 50, 100, 100); } } }