View Full Version : سوال: ایجاد کنترل Progressbar شخصی از ابتدا
MehdiElexal
چهارشنبه 08 مرداد 1393, 13:48 عصر
با سلام خدمت دوستان
من یه گراف میله ای دارم میخوام داخل تب 2 از تب کنترلم بیوفته
اما الان فقط روی فرمم میوفته
هرکاری کردم نشد داخل تب 2 تب کنترل بندازم
لطفا راهنمایی بفرمائید
با تشکر
if (i % 2 == 0) value++;
//lblvalue.Text = "Value is: " + value.ToString() + "%";
Graphics graph = Graphics.FromHwnd(this.Handle);
System.Drawing.Drawing2D.LinearGradientBrush gradien = new System.Drawing.Drawing2D.LinearGradientBrush(new Point(5, 5), new Point(10, 10), Color.DodgerBlue, Color.DodgerBlue);
//graph.Clear(Color.White);
i += 1;
Rectangle rec = new Rectangle(309, 309, 200, 11);
graph.DrawRectangle(Pens.LightSlateGray, rec);
MehdiElexal
چهارشنبه 08 مرداد 1393, 18:45 عصر
به جای this.handle چه خصوصیت tabcontrol رو قرار بدم که handle شه ؟
MehdiElexal
چهارشنبه 08 مرداد 1393, 18:57 عصر
پیدا کردم tabpage1
MehdiElexal
چهارشنبه 08 مرداد 1393, 20:51 عصر
دوستان جلوتر گیر کردم باز :گریه:
Graphics graph = Graphics.FromHwnd(this.Handle);
System.Drawing.Drawing2D.LinearGradientBrush gradien = new System.Drawing.Drawing2D.LinearGradientBrush(new Point(5, 5), new Point(10, 10), Color.Yellow, Color.Yellow);
//graph.Clear(Color.Red);
//i+=1;
Rectangle rec=new Rectangle(20,20,200,20);
graph.DrawRectangle(Pens.Black, rec);
graph.FillRectangle(gradien, 21, 21, i, 19);
الان گراف رو رسم میکنم
مثلا میدم به طول 200 میره تا 200 اما میگم حالا الان 20 نمیشه دیگه
میشه ها اما چون تا 20 رفته یه بار رنگی کرده حالا رو 20 وای میسته معلوم نمیشه چون تا 200 رنگ داشته
لطفا کمک کنید گیرم
نوار جلو میره اما برای بازگشت به عقب رفرش لازم داره تا رنگ قبلی پاک شه و عدد پایین تر بتونه خودش رو نشون بده الان میره زیر رنگ بزرگتر !!!
منتها رفرش نمیخوام هی بدم چون دارم استفاده پروگرس میکنم ازش نمیشه سر هر عدد رفرش داد
ممنون میشم یه راه حلی بگید رو این سورس
منظورمم از 20 200 و این اعداد طول گراف هست یا همون value برای progress بار
با تشکر
Mahmoud.Afrad
چهارشنبه 08 مرداد 1393, 22:17 عصر
باید در رویداد Paint این کار رو انجام بدی. در اینصورت یک پراپرتی برای value در نظر میگیری و در این پراپرتی در صورت تغییر value متد Invalidate رو صدا میزنی تا دوباره Paint کنه.
بهتره کدها رو در قالب یک کنترل ایجاد کنی.
مثال:
class MyProgressBar : Control
{
private uint value;
private uint maxValue;
private Color borderColor;
private Color progressColor;
private bool drawBorder;
public bool DrawBorder
{
get { return drawBorder; }
set { drawBorder = value; }
}
public Color ProgressColor
{
get { return progressColor; }
set { progressColor = value; }
}
public Color BorderColor
{
get { return borderColor; }
set { borderColor = value; }
}
public uint Value
{
get { return this.value; }
set
{
this.value = value;
this.Invalidate();
}
}
public uint MaxValue
{
get { return maxValue; }
set { maxValue = value; }
}
public MyProgressBar()
{
this.DoubleBuffered = true;
this.progressColor = Color.Blue;
this.BorderColor = Color.Black;
this.DrawBorder = true;
this.MaxValue = 100;
}
protected override void OnPaint(PaintEventArgs e)
{
double valueD = Convert.ToDouble(value);
double widthD = Convert.ToDouble(this.Width);
double maxvalueD = Convert.ToDouble(maxValue);
int progressWidth = (int)System.Math.Ceiling(valueD / maxvalueD * widthD);
e.Graphics.FillRectangle(new SolidBrush(progressColor), 0, 0, progressWidth, this.Height);
if (drawBorder)
{
e.Graphics.DrawRectangle(new Pen(new SolidBrush(borderColor)), 0, 0, this.Width - 1, this.Height - 1);
}
base.OnPaint(e);
}
}
MehdiElexal
پنج شنبه 09 مرداد 1393, 23:55 عصر
جناب افراد آیا امکان این هست که این کلاس رو به یک DLL تبدیل کنید ؟
با تشکر
hamid685
شنبه 11 مرداد 1393, 11:54 صبح
سلام اینم dll
نشد تو سایت اپلود کنم
http://s5.picofile.com/file/8133051526/ProgressBar.rar.html
MehdiElexal
یک شنبه 12 مرداد 1393, 11:56 صبح
سلام اینم dll
نشد تو سایت اپلود کنم
http://s5.picofile.com/file/8133051526/ProgressBar.rar.html
اگه امکانش هست سورس رو هم بگذارید ممنون میشم یا طریقه استفاده از توابع برای رسم پروگرس
با تشکر
hamid685
دوشنبه 13 مرداد 1393, 08:11 صبح
اگه امکانش هست سورس رو هم بگذارید ممنون میشم یا طریقه استفاده از توابع برای رسم پروگرس با تشکر سورس progressbar
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.