Hallo, ich hätte da mal eine Frage bezüglich meines selbstgebauten Controls in C#.
Ich versuche derzeit mir eine eigene ProgressBar zu basteln, die in einem Kreis dargestellt wird.
Im Anhang befinden sich die Bilder, Screenshot_7 ist der Entwurf im Visual Studio, wo ja alles noch in Ordnung aussieht.
Sobald ich aber Debugge und einmal auf den Button klicke, vergrößert sich der Kreis und die Ränder werden abgeschnitten, verstehe aber nicht wieso.
Spoiler anzeigen
Jemand vielleicht eine Idee diesbezüglich oder eventuell eine Referenz wo ich was nachlesen kann?
lg
TehBasic
Ich versuche derzeit mir eine eigene ProgressBar zu basteln, die in einem Kreis dargestellt wird.
Im Anhang befinden sich die Bilder, Screenshot_7 ist der Entwurf im Visual Studio, wo ja alles noch in Ordnung aussieht.
Sobald ich aber Debugge und einmal auf den Button klicke, vergrößert sich der Kreis und die Ränder werden abgeschnitten, verstehe aber nicht wieso.
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace customProgressBar
- {
- public partial class pgBar : System.Windows.Forms.ProgressBar
- {
- public pgBar()
- {
- InitializeComponent();
- this.SetStyle(ControlStyles.UserPaint, true);
- }
- protected override void OnResize(EventArgs e)
- {
- this.Invalidate();
- }
- private void DrawProgress(Graphics g, float percentage)
- {
- dynamic progressAngle = Convert.ToSingle(360 / 100 * percentage);
- dynamic remainderAngle = 360 - progressAngle;
- using (Pen progressPen = new Pen(Color.Black, 5))
- {
- progressPen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;
- using (Pen remainderPen = new Pen(Color.LightGray, 5))
- {
- remainderPen.Alignment = System.Drawing.Drawing2D.PenAlignment.Inset;
- g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
- g.DrawArc(progressPen, this.ClientRectangle , 90 - (progressAngle / 2), progressAngle);
- g.DrawArc(remainderPen, this.ClientRectangle, progressAngle + (90 - (progressAngle / 2)), remainderAngle);
- }
- }
- }
- protected override void OnPaint(PaintEventArgs e)
- {
- DrawProgress(e.Graphics, (float)Value);
- }
- }
- }
Jemand vielleicht eine Idee diesbezüglich oder eventuell eine Referenz wo ich was nachlesen kann?
lg
TehBasic