一.设计时与运行时效果
二.部分源代码
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
- if (_list.Count == 0 && _paintStyle != PaintStyle.Line)
- return;
- if (_isShadeColor)
- {
- if(_colorList == null || _colorList.Length == 0)
- return;
- }
- PointF Pcenter = new PointF(this.ClientSize.Width / 2, this.ClientSize.Height / 2);
- Graphics g = e.Graphics;
- g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
- switch (_paintStyle)
- {
- case PaintStyle.Flower :
- for (int i = 0; i < _flowerNum; i++)
- {
- g.TranslateTransform(Pcenter.X, Pcenter.Y);//将原点变换到图形中心
- g.RotateTransform(i * 360 / _flowerNum); //旋转
- WaitItem item = _list[i] as WaitItem;
- if (_isShadeColor)
- {
- item.FillNum = 2;
- item.FillColor = _colorList[i];
- }
- item.DrawPath(g);
- g.ResetTransform();
- }
- break;
- case PaintStyle.Triangle :
- for (int i = 0; i < _list.Count; i++)
- {
- g.TranslateTransform(Pcenter.X, Pcenter.Y);//将原点变换到图形中心
- g.RotateTransform(i * 360 / _flowerNum); //旋转
- g.TranslateTransform(0, -this.Height / 4);//
- WaitItem item = _list[i] as WaitItem ;
- if (_isShadeColor)
- {
- item.FillNum = 2;
- item.FillColor = _colorList[i];
- }
- item.DrawPath(g);
- g.ResetTransform();
- }
- break;
- case PaintStyle.Gear:
- for (int i = 0; i < _flowerNum; i++)
- {
- g.ResetTransform();
- g.TranslateTransform(Pcenter.X, Pcenter.Y);//将原点变换到图形中心
- g.RotateTransform(i * 360 / _flowerNum); //旋转
- WaitItem item = _list[i] as WaitItem;
- item.DrawPath(g);
- g.ResetTransform();
- }
- break;
- case PaintStyle.Annulus :
- for (int i = 0; i < _flowerNum; i++)
- {
- g.TranslateTransform(Pcenter.X, Pcenter.Y);//将原点变换到图形中心
- g.RotateTransform(i * 360 / _flowerNum); //旋转
- WaitItem item = _list[i] as WaitItem;
- if (_isShadeColor)
- {
- item.FillNum = 2;
- item.FillColor = _colorList[i];
- }
- item.DrawPath(g);
- g.ResetTransform();
- }
- break;
- case PaintStyle.Line:
- DrawLine(g);
- //DrawAnnulus(g);
- break;
- }
- }