В настоящее время я пишу расширенное управление индикатором выполнения, на 100% открытый исходный код, и я создал несколько основных стилей с градиентами и сплошными цветами.
Одним из вариантов, которые я хотел добавить, была анимация дляБар, прет очень похожий на Windows 7 и Vista, зеленый индикатор выполнения.Поэтому мне нужно добавить движущееся «Glow» к% bar, однако моя попытка этого выглядит ужасно.
Мой метод - нарисовать эллипс с заданным размером и переместить его в позицию x, пока он не достигнет конца.анимация начинается снова.
Во-первых, есть ли у кого-нибудь ссылки или код, чтобы помочь мне достичь текущего эффекта свечения Windows 7 с помощью GDI или подобного метода?
У меня есть несколько других анимаций, которые будуттакже добавьте бар, следовательно, GDI.
private void renderAnimation(PaintEventArgs e)
{
if (this.AnimType == animoptions.Halo)
{
Rectangle rec = e.ClipRectangle;
Rectangle glow = new Rectangle();
//SolidBrush brush = new SolidBrush(Color.FromArgb(100, Color.White));
//int offset = (int)(rec.Width * ((double)Value / Maximum)) - 4;
int offset = (int)(rec.Width / Maximum) * Value;
if (this.animxoffset > offset)
{
this.animxoffset = 0;
}
glow.Height = rec.Height - 4;
if (this.animxoffset + glow.X > offset)
{
glow.Width = offset - (this.animxoffset + 50);
}
else
{
glow.Width = 50;
}
glow.X = this.animxoffset;
LinearGradientBrush brush = new LinearGradientBrush(glow, Color.FromArgb(0, Color.White), Color.FromArgb(100, Color.White), LinearGradientMode.Horizontal);
e.Graphics.FillEllipse(brush, this.animxoffset, 2, glow.Width, glow.Height);
brush.Dispose();
string temp = offset.ToString();
e.Graphics.DrawString(temp + " : " + glow.X.ToString(), DefaultFont, Brushes.Black, 2, 2);
animTimer = new System.Timers.Timer();
animTimer.Interval = 10;
animTimer.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
animTimer.Start();
}
}
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.animTimer.Stop();
this.animxoffset += 2;
Invalidate();
}