Özel döngüsel ilerleme çubuğumu WinForm'da istiyorum. Ama sonuç düşündüğüm şeye uymuyor. Şekli bu resimde aynı şekilde nasıl çizebilirim? Sorunumda net olmak için iki resim yükledim.WinForm'da GraphicsPath kullanarak dairesel bir ilerleme çubuğu nasıl çizilir?
Benim kod, bunun:
void Form1_Paint(object sender, PaintEventArgs e)
{
int angle = 120;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
Rectangle outerRect = new Rectangle(50, 50, 100, 100);
Rectangle innerRect = new Rectangle(70, 70, 60, 60);
int innerRadius = innerRect.Width/2;
int outerRadius = outerRect.Width/2;
Point innerCenter = new Point(innerRect.X + innerRadius, innerRect.Y + innerRadius);
Point outerCenter = new Point(outerRect.X + outerRadius, outerRect.Y + outerRadius);
GraphicsPath outerCircle = new GraphicsPath();
outerCircle.AddEllipse(outerRect);
GraphicsPath innerCircle = new GraphicsPath();
innerCircle.AddEllipse(innerRect);
GraphicsPath progPath = new GraphicsPath();
Point p1 = new Point(outerRect.X + outerRadius, outerRect.Y);
Point p2 = new Point(innerRect.X + innerRadius, innerRect.Y);
Point inner = new Point((int)(innerRadius * Math.Cos(angle * Math.PI/180) + innerCenter.X),
(int)(innerRadius * Math.Sin(angle * Math.PI/180) + innerCenter.Y));
Point outer = new Point((int)(outerRadius * Math.Cos(angle * Math.PI/180) + outerCenter.X),
(int)(outerRadius * Math.Sin(angle * Math.PI/180) + outerCenter.Y));
progPath.AddLine(p1, p2);
progPath.AddArc(innerRect, -90, angle);
progPath.AddLine(inner, outer);
progPath.AddArc(outerRect, angle - 90,-angle);
progPath.Widen(Pens.Black);
e.Graphics.DrawPath(Pens.Black, progPath);
}
Teşekkür @Reza. Bu yöntem benim yöntemimden daha basit. –