PDA

View Full Version : مبتدی: رسم polyline با استفاده از GDI+



CodeforLife
دوشنبه 02 فروردین 1395, 01:45 صبح
سلام دوستان گرامی.
من می خوام یه polyline رسم کنم .
ولی نمی دونم چه طوری ؟
می دونم که باید از متد drawlines استفاده کنم ...
میشه رهنماییم کنید
سال نو مبارک

ژیار رحیمی
دوشنبه 02 فروردین 1395, 08:50 صبح
private void Form3_Paint(object sender, PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black, 3);


// Create points that define polygon.
Point point1 = new Point(50, 50);
Point point2 = new Point(100, 25);
Point point3 = new Point(200, 5);
Point point4 = new Point(250, 50);
Point point5 = new Point(300, 100);
Point point6 = new Point(350, 200);
Point point7 = new Point(250, 250);
Point[] curvePoints =
{
point1,
point2,
point3,
point4,
point5,
point6,
point7
};


// Draw polygon to screen.
e.Graphics.DrawPolygon(blackPen, curvePoints);
}

CodeforLife
چهارشنبه 04 فروردین 1395, 14:12 عصر
سلام .
من برای رسم polygon ,
point ها رو به صورت property تعریف کردم .که از طریق propertyGrid بتونم اونها رو تغییر بدم ...
ولی در propertyGrid به صورت غیر فعاله باید چه کار کنم ؟
کد رو میگذارم خدمتتون دوستان عزیز

class Polygon : FillableShape
{
static int ShapeName = 0;
public Polygon()
: base()
{
++ShapeName;
this.name = "Polygon" + ShapeName.ToString();
point1 = new PointF(40.0F, 30.0F);
point2 = new PointF(80.0F, 10.0F);
point3 = new PointF(150.0F, 100.0F);
point4 = new PointF(150.0F, 100.0F);
point5 = new PointF(150.0F, 140.0F);
ptsArray = new PointF[]
{
point1, point2, point3, point4, point5
};
}
//-----------------------------------------------------------
public PointF[] ptsArray { get; set; }
[System.ComponentModel.Browsable(false)]

public PointF point1 { get; set; }
[System.ComponentModel.Browsable(false)]

public PointF point2 { get; set; }
[System.ComponentModel.Browsable(false)]

public PointF point3 { get; set; }
[System.ComponentModel.Browsable(false)]

public PointF point4 { get; set; }
[System.ComponentModel.Browsable(false)]

public PointF point5 { get; set; }
//---------------------------------------------------------------
public override void Draw(Graphics g)
{
if (fillstyle == FillStyleEnum.None)
{
Brush brush = new SolidBrush(fillcolor);
g.FillPolygon(brush, ptsArray);
}
if (fillstyle == FillStyleEnum.Hatch)
{
HatchBrush brush = new HatchBrush(HatchStyle.DiagonalCross, Color.Black, fillcolor);
g.FillPolygon(brush, ptsArray);
}
if (fillstyle == FillStyleEnum.Gradient)
{
LinearGradientBrush brush = new LinearGradientBrush(new Point(0, 0), new Point(200, 10), fillcolor, Color.FromArgb(255, 0, 255, 0));
g.FillPolygon(brush, ptsArray);
}

g.DrawPolygon(new Pen(strockcolor, strockwidth), ptsArray);
}

CodeforLife
چهارشنبه 04 فروردین 1395, 14:23 عصر
اینم عکس از property grid
139690
می خوام مکانش رو تغییر بدم , ولی نمی شه ! چون خصوصیت های point غیر فعاله
خواهش میکنم کمکم کنید

ژیار رحیمی
چهارشنبه 04 فروردین 1395, 17:39 عصر
سلام نوع پراپتی تعریف شده در کدتون از نوع PointF هست که از نوع struct هست وقابلیت گسترش بصورت پراپرتی رو ندارد.شما راههای بهتری برای انتقال و تغییر shape ها در canvas داری این روش جوابگوی حل مسئله شما نیست.بهتره مثل paint امکان انتخاب shape رو داشته باشی و در حالت انتخاب anchor های برای تغییر سایز داشته باشه که کاربر بتون هم تغییر سایز هم انتقال رو انجام بده
این نمونه لینک هم بررسی کن
http://barnamenevis.org/showthread.php?517059-%D8%B3%D8%B7%D9%84-%D8%B1%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%B4%D8%A7%D8%A8%D9%87-Paint-%D8%AF%D8%B1-C&p=2299129&viewfull=1#post2299129