PDA

View Full Version : سوال: چگونگی تبدیل مربع به لوزی ؟



nofilter
سه شنبه 25 خرداد 1389, 10:11 صبح
سلام
من کد پایین که مربوط به رسم مربع هست رو می خوام به رسم لوزی تبدیل کنم


start_pnt = new Point(e.X, e.Y);
g.DrawRectangle(p, new Rectangle(start_pnt_X, start_pnt_Y, width, height));
break



لطفا راهنمایی بفرمایید.

Saeed.Masoumi
سه شنبه 25 خرداد 1389, 18:47 عصر
سلام
دوست عزیز مشکل شما اینه که می خواین دو تا شکل که هیچ ربطی به هم ندارند رو به هم تبدیل کنید.
مربع مربع است و لوزی لوزی.
برای رسم لوزی (به انگلیسی میشه Diamond ) شما کافی یک مثلث متساوی الساقین (مثلثی که دو ضلع آن با هم برابر است ) رسم کنید سپس آنرا روی قاعده ی اصلی قرینه کنید و یک کپی از آن تهییه کنید.
توجه کنید اگر روی یکی از ساقها قرینه و کپی کنید به متوازی الاضلاع می رسین.
یک پانل به اندازه 300X300 بر روی فرم قرار دهید.یک باتن هم قرار بده و توی ایونت کلیکش این قطعه کد رو بنویسید:



Pen myPen = new Pen(Color.Blue);
Point[] myPointArray = { new Point(0, 30), new Point(50, 10), new Point(50, 50) };
Matrix mtx = new Matrix();
Graphics myGraphics = panel1.CreateGraphics();
myGraphics.DrawPolygon(myPen, myPointArray);
mtx.RotateAt(180, new PointF(50, 30));
mtx.TransformPoints(myPointArray);
myGraphics.DrawPolygon(myPen, myPointArray);
myPen.Dispose();


در ضمن دوست عزیز با این (http://barnamenevis.org/forum/showthread.php?t=227596)پستی که دادید و این الان وقت من رو کلی هدر دادین.
الان چه احساسی دارین؟

nofilter
سه شنبه 25 خرداد 1389, 19:09 عصر
سلام
دوست عزیز مشکل شما اینه که می خواین دو تا شکل که هیچ ربطی به هم ندارند رو به هم تبدیل کنید.
مربع مربع است و لوزی لوزی.
برای رسم لوزی (به انگلیسی میشه Diamond ) شما کافی یک مثلث متساوی الساقین (مثلثی که دو ضلع آن با هم برابر است ) رسم کنید سپس آنرا روی قاعده ی اصلی قرینه کنید و یک کپی از آن تهییه کنید.
توجه کنید اگر روی یکی از ساقها قرینه و کپی کنید به متوازی الاضلاع می رسین.

Pen myPen = new Pen(Color.Blue);
Point[] myPointArray = { new Point(0, 30), new Point(50, 10), new Point(50, 50) };
Matrix mtx = new Matrix();
Graphics myGraphics = panel1.CreateGraphics();
myGraphics.DrawPolygon(myPen, myPointArray);
mtx.RotateAt(180, new PointF(50, 30));
mtx.TransformPoints(myPointArray);
myGraphics.DrawPolygon(myPen, myPointArray);

در ضمن دوست عزیز با این (http://barnamenevis.org/forum/showthread.php?t=227596)پستی که دادید و این الان وقت من رو کلی هدر دادین.
الان چه احساسی دارین؟



آقا دمت گرم
خیلی ممنون
من در واقع می خواستم کدی رو که گذاشته بودم یه جوری تغییر بدم که به لوزی برسم
اگه مربع یکمی چرخش بخوره شاید به شکل لوزی در بیاد.

من دیدم که کسی جواب نمیده،گفتم شاید نحوه سوال پرسیدن من اشتباه باشه،در نتیجه اومدم و سوالاتم رو جزئی تر کردم.

ولی این چیزی که شما گفتین خیلی کامله و من سعی می کنم از این برای سایر قسمت های پروژه اصلیم استفاده کنم.

به هر جهت خیلی خیلی ممنون که وقت گذاشتید.