Csharp/CSharp Tutorial/2D/Path
Версия от 15:31, 26 мая 2010; (обсуждение)
Close a figure and Create another figure
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form {
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
g.FillRectangle(Brushes.White, this.ClientRectangle);
GraphicsPath gp = new GraphicsPath();
gp.AddLine(10, 10, 10, 50);
gp.AddBezier(10, 50, 10, 55, 25, 70, 30, 70);
gp.CloseFigure();
gp.StartFigure();
gp.AddLine(60, 110, 40, 160);
g.DrawPath(Pens.Black, gp);
gp.Dispose();
}
public static void Main() {
Application.Run(new Form1());
}
}
Draw Path and get mouse click
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class DrawPathMouseClick : System.Windows.Forms.Form
{
private System.ruponentModel.Container components = null;
GraphicsPath myPath = new GraphicsPath();
private bool isImageClicked = false;
private int imageClickedIndex;
public DrawPathMouseClick()
{
InitializeComponent();
myPath.StartFigure();
myPath.AddLine(new Point(150, 10), new Point(120, 150));
myPath.AddArc(200, 200, 100, 100, 0, 90);
Point point1 = new Point(250, 250);
Point point2 = new Point(350, 275);
Point point3 = new Point(350, 325);
Point point4 = new Point(250, 350);
Point[] points = {point1, point2, point3, point4};
myPath.AddCurve(points);
myPath.CloseFigure();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(376, 361);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DrawPathMouseClick_MouseUp);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPathMouseClick_Paint);
}
[STAThread]
static void Main()
{
Application.Run(new DrawPathMouseClick());
}
private void DrawPathMouseClick_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point mousePt = new Point(e.X, e.Y);
if(myPath.IsVisible(mousePt))
{
isImageClicked = true;
imageClickedIndex = 3;
}
else
{
isImageClicked = false;
}
Invalidate();
}
private void DrawPathMouseClick_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillPath(Brushes.RoyalBlue, myPath);
if(isImageClicked == true)
{
Pen outline = new Pen(Color.Purple, 5);
switch(imageClickedIndex)
{
case 3:
g.DrawPath(outline, myPath);
break;
default:
break;
}
}
}
}
GraphicsPath.CloseFigure
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form {
protected override void OnPaint(PaintEventArgs e) {
Graphics g = e.Graphics;
GraphicsPath gp = new GraphicsPath();
gp.AddLine(10, 10, 110, 15);
gp.AddLine(110, 15, 100, 96);
gp.AddLine(100, 96, 15, 110);
gp.CloseFigure();
g.FillRectangle(Brushes.White, this.ClientRectangle);
g.DrawPath(Pens.Black, gp);
gp.Dispose();
}
public static void Main() {
Application.Run(new Form1());
}
}