PDA

View Full Version : سوال: Fade کردن پس زمینه Label



peon13
سه شنبه 24 مرداد 1391, 16:29 عصر
سلام

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

ممنون:قلب::قلب::قلب:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FadeColorBack
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
int red = 0;
int green = 90;
int blue = 70;
for (int counter = 0; counter < this.Size.Height; counter++)
{
red = red + 1; // You must do the math here...
if (red > 255) red = 255;
e.Graphics.DrawLine(new
Pen(System.Drawing.Color.FromArgb(red, green, blue), 1), 0, counter,
this.Size.Width, counter);
}

}

protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}

}
}

saeed.8350028
سه شنبه 24 مرداد 1391, 16:58 عصر
بعضی از کنترل های آماده هستند که توی properties این قابلیت را دارند و یک کم بگردی می تونی دانلودشون بکنی.

موفق باشی

Mahmoud.Afrad
سه شنبه 24 مرداد 1391, 17:01 عصر
نیاز به حلقه نیست.


برای لیبل هم طبق همین کدی که گذاشتید عمل کنید یعنی باید یک کلاس که از کلاس لیبل مشتق شده ایجاد کنید و رویدادها را override کنید.
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
class CustomLabel : Label
{
private LinearGradientBrush lgb;
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);
lgb = new LinearGradientBrush(base.DisplayRectangle, Color.FromArgb(100, 100, 100), Color.FromArgb(220, 220, 220), 90f);
e.Graphics.FillRectangle(lgb, base.DisplayRectangle);
}

protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
}
بعد از یک بار دیباگ کردن ، CustomLabel به tool box اضافه میشه که میتونید ازش استفاده کنید.

peon13
سه شنبه 24 مرداد 1391, 18:54 عصر
ممنون خیلی کمک کردی. فقط میشه خط به خط توضیح بدی. مثلا من ای خط رو وقتی حدفش میکنم هیچ اتفاقی نمی افته:
base.OnPaintBackground(e);

بعد اینکه کلمه ی کلیدی base چه کاری انجام میده؟
واینکه:
private LinearGradientBrush lgb;
یعنی چی؟

ممنون.:قلب: