PDA

View Full Version : رسم شکل های غیر هندسی



NIMA_1981
سه شنبه 20 اردیبهشت 1390, 21:01 عصر
سلام دوستان این شکل رو نگاه کنید

http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Hypergraph-wikipedia.svg/262px-Hypergraph-wikipedia.svg.png

خالا من میخوام این جور شکلی رو بکشم مثلا من اکه 3 نقطه داشه باشم که هر نقطه مختصات x,y داشته باشه مثل نقاط v3 -v5 v6 تو همون شکل بالا من خودم وقتی میام میکشم این شکل میشه مثلث میشه میشه یه کاری کرد که تقریبا اینجوری در بیاد حداقل لبه ها گرد بشه یا یه چیزی توی این مایه
http://up.iran-ps.com/images/968uu.jpg

با تشکر

ژوپیتر
سه شنبه 20 اردیبهشت 1390, 23:52 عصر
چیزی که قصد رسم کردنش رو تو #C دارید به نام رسم بلاب Blob معروفه که #C همچین امکانی رو نداره و در نهایت میتونید پلیگون رسم کنید، در این مورد باید توابعش رو دستی بنویسید که به حالت رستر Raster پیکسلها رو رسم کنه، فکر نکنم کار آسونی باشه. یک نمونه با DirectX براتون میذارم شاید بهتون ایده بده.

http://msdn.microsoft.com/en-us/library/ee416234%28v=vs.85%29.aspx

Amir Oveisi
چهارشنبه 21 اردیبهشت 1390, 01:24 صبح
میتونین از متد DrawCurve در کلاس Graphics استفاده کنید

NIMA_1981
چهارشنبه 21 اردیبهشت 1390, 11:36 صبح
میتونین از متد DrawCurve در کلاس Graphics استفاده کنید

میشه یک مثال برام بزنید ممنون میشم

Amir Oveisi
چهارشنبه 21 اردیبهشت 1390, 11:44 صبح
رویداد Paint فرم رو handle کنید و داخل اون از این کد استفاده کنید:
private void form1_OnPaint(object sender, PaintEventArgs e)
{

// Create pens.
Pen redPen = new Pen(Color.Red, 3);
Pen greenPen = new Pen(Color.Green, 3);

// Create points that define curve.
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 lines between original points to screen.
e.Graphics.DrawLines(redPen, curvePoints);

// Draw curve to screen.
e.Graphics.DrawCurve(greenPen, curvePoints);
}

توضیحات کاملتر : http://msdn.microsoft.com/en-us/library/7ak09y3z.aspx

NIMA_1981
چهارشنبه 21 اردیبهشت 1390, 13:26 عصر
مرسی

الان من این شکل رو میکشم
http://up.iran-ps.com/images/528tt.jpg

حالا جطوری میتونم توی این رو رنگ کنم مثلا یک رنگ آبی بزنم توی این قسمتی که رسم شده

NIMA_1981
چهارشنبه 21 اردیبهشت 1390, 13:33 عصر
اقا رتگ کردن رو حل شد ب این کد


g.FillClosedCurve(Brushes.BlanchedAlmond, pt);


فقط چه طوری می تونم حالت transparent به این رنگ بدم که عکس زیرشم معلوم باشه

NIMA_1981
چهارشنبه 21 اردیبهشت 1390, 15:03 عصر
اقا از این کد هم برای transparent شدن استفاده کردم




SolidBrush test2 = newSolidBrush(Color.FromArgb(90, Color.Aqua));


مرسی دوستان