PDA

View Full Version : آموزش: تغییر فرم به هر شکلی که بخواهید



Dream22
سه شنبه 24 آذر 1388, 14:31 عصر
تا حالا از این فرم ها تو برنامه های مختلف دیدید ،فرم هایی که به شکل دایره ،بیضی، ستاره و ...
راه اول :
یک عکس رو در خاصیت BackGroundImage فرم قرار بدید در این حالت تمام نقاطی که می خواهید به محو شود باید یک رنگ مشخص و کاملا یک دست داشته باشند(مثلا سیاه) ، خب حالا خاصیت TranceparencyKey فرم را به همان رنگ مورد نظر(سیاه) قرار دهید .
می بینید که یه سری از نقطه ها ناخواسته به وجود میاد پس به روش دوم گوش کنید...
واما راه دوم:
در این روش باید رویداد OnPaint فرمتون رو دوباره بنویسید (override کنید).
پس بعد از constractor کلاس فرمتون بنویسید:


protected override void OnPaint(PaintEventArgs e)
{
GraphicsPath gp = new GraphicsPath();
Graphics gr = this.CreateGraphics();
Region r;
PointF[] p = new PointF[11];


p[0] = new PointF(160, 0);
p[1] = new PointF(120, 60);
p[2] = new PointF(0 , 60);
p[3] = new PointF(90, 110);
p[4] = new PointF(0 , 240);
p[5] = new PointF(160,150);
p[6] = new PointF(300, 240);
p[7] = new PointF(240, 110);
p[8] = new PointF(320, 60);
p[9] = new PointF(200, 60);
p[10] = new PointF(160, 0);

gp.AddPolygon(p);


r = new Region(gp);
Region r2 = new Region();
this.Region = r;

gr = this.CreateGraphics();

gr.Dispose();
gp.Dispose();
r.Dispose();
}

از این NameSpace استفاده کنید:

using System.Drawing.Drawing2D;
این کد برای درست کردن ستاره هست و برای اشکال دیگر باید آرایه P را تغییر داده و شکلتون رو در بیارید و ...
خاصیت FormBorderStyle فرم رو هم به None تغییر بدید .
راستی یه دکمه برای خروج از برنامه هم بذارید.

hamid.shekasteh
سه شنبه 24 آذر 1388, 14:48 عصر
ببخشید منبعتون چیه؟
باتشکر.