PDA

View Full Version : سوال: چگونه کل یک فرم را تاریک کنیم؟



4EBRAHIM4
یک شنبه 04 آبان 1393, 20:52 عصر
سلام دوستان من برنامه ای نوشتم که قرار وقتی فرم جدیدی باز میشه محتوای فرم قبلی تاریک بشه مثل شکل:124983

feryt20
یک شنبه 04 آبان 1393, 21:45 عصر
شاید این بتونه کمکت بکنه
یه فرم دیگه درست کن
یه کلید توی فرم اولت بذار
توی خاصیت کلیک فرم اولت این کدو بنویس


Form2 frm2 = new Form2();
this.BackColor = System.Drawing.Color.DarkKhaki;
frm2.ShowDialog();
this.BackColor = System.Drawing.Color.White;

pedram.11
یک شنبه 04 آبان 1393, 22:49 عصر
این روشیه خودم به ذهنم رسیده شاید راه بهتری هم وجود داشته باشه اما چون توی این زبان قابلیت آلفا عمل نمیکنه مگر اینکه سخت افزار سیستم بالا باشه(تا اونجایی که من شیدم)
اما در کل ما میخوایم همچین کاری کنیم:
124991
سمت چپی حالت عادی فرمه که پس زمینه سفید داره و با از دست دادن فکوس فرم حالت عکس سمت راستی پیش میاد که یه سایه بهش میندازه که اصطلاحا بش میگن Dim میشه :متفکر:
من به نظرم برای اینکه بشه اینکارو با تمام فرم ها انجام داد یک فرم با این قابلیت ایجاد کنیم و بقیه فرم هارو از همین به ارث ببریم...
اول یه فرم جدید به اسم CustomForm اضافه میکنیم و کدهای فرم رو به اینصورت کپی میکنیم :لبخند:
public partial class CustomForm : Form
{
protected Panel panel1;
public CustomForm()
{
InitializeComponent();
panel1 = new Panel();
panel1.Dock = DockStyle.Fill;
this.Controls.Add(panel1);
}
Panel p;
private void Form1_Load(object sender, EventArgs e)
{
p = new Panel();
p.Paint += p_Paint;
p.Dock = DockStyle.Fill;
p.Visible = false;
this.Controls.Add(p);
}
void p_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Brush b = new SolidBrush(Color.FromArgb(70, 0, 0, 0));
g.FillRectangle(b, new Rectangle(0, 0, this.panel1.Width, this.panel1.Height));
}


private void Form1_Activated(object sender, EventArgs e)
{
p.Visible = false;
}


private void Form1_Deactivate(object sender, EventArgs e)
{
p.BringToFront();
Bitmap bmp = new Bitmap(this.panel1.Width, this.panel1.Height);
this.panel1.DrawToBitmap(bmp, new Rectangle(Point.Empty, bmp.Size));
p.BackgroundImage = bmp;
p.Visible = true;
p.Invalidate();
}
}

panel1 پنل اصلی هست که کنترل ها درش قرار میگیرن. پنل p پنلی هست که فرم رو Dim میکنه.
کار این برنامه به اینصورت هست که در صورت از بین رفتن فکوس از panel1 عکس گرفته میشه و رنگ با opacity پایین روش قرار میگیره. مابقی کد ها هم که ساده هستن و کار نمایش تصویر و کدر کردن اونو انجام میدن...
حالا که فرم نمونه ساخته شده از این به بعد هر فرمی که ساختیم کلاس CustomForm رو بجای Form به ارث میبریم.
یعنی:
برای فرمی مثه Form1:
public partial class Form1 : CustomForm
{
public Form1()
{
....


و باقی کارا...

پروژه هم خدمت شما: