Shuxia Ning
2025-02-13 2f1cbec203dcff25df7a5c2b51b13ec558f2c3db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System.Drawing;
using System.Windows.Forms;
 
namespace IStation.WinFrmUI
{
    public partial class ImageSliderPanel : Label
    {
        public ImageSliderPanel()
        {
            InitializeComponent();
            InitForm();
            InitContent();
        }
        #region property
        private Image _sliderImage;
        public Image SliderImage
        {
            get { return _sliderImage; }
            set
            {
                _sliderImage = value;
                _picSlider.Image = _sliderImage;
            }
        }
 
        #endregion
 
        #region control
        private PictureBox _picSlider;
        #endregion
 
        #region method
        /// <summary>
        /// //绘制边框
        /// </summary>      
        /// <param name="color">边框颜色</param>
        /// <param name="x">label宽度</param>
        /// <param name="y">label高度</param>
        private void DrawBorder(Color bordercolor, int x, int y)
        {
            Graphics graphics = CreateGraphics();
            BorderStyle = BorderStyle.None;
            Rectangle myRectangle = new Rectangle(0, 0, x, y);
            ControlPaint.DrawBorder(graphics, myRectangle, bordercolor, ButtonBorderStyle.Solid);
            //BorderStyle= BorderStyle.None;
        }
        #endregion
        //边框颜色
        Color _borderColor = Color.Blue;
        public void SetBorderColor(Color bordercolor)
        {
            _borderColor = bordercolor;
            _picSlider.Invalidate();
        }
 
        #region 初始化窗口
        private void InitForm()
        {
            DoubleBuffered = true;
            Size = new Size(45, 45);
        }
 
        private void InitContent()
        {
            _picSlider = new ImageButton
            {
                Cursor = Cursors.Hand,
                Parent = this,
                SizeMode = PictureBoxSizeMode.CenterImage,
                Image = SliderImage,
                Size = new Size(20, 20)
            };
            _picSlider.Location = new Point(ClientSize.Width / 2 - _picSlider.Width / 2, ClientSize.Height / 2 - _picSlider.Height / 2);
            _picSlider.Paint += (sender, e) => { DrawBorder(_borderColor, this.Width, this.Height); };//Color.FromArgb(0, 255, 128)
            _picSlider.MouseUp += (sender, e) =>
            {
                MouseUpEvent(sender, e);
            };
            _picSlider.MouseMove += (sender, e) =>
            {
                MouseMoveEvent(sender, e);
            };
            _picSlider.MouseDown += (sender, e) =>
            {
                MouseDownEvent(sender, e);
            };
        }
        #endregion
 
        #region event
        public delegate void MouseUpEventHandler(object sender, MouseEventArgs e);
        public event MouseUpEventHandler MouseUpEvent;
 
        public delegate void MouseMoveEventHandler(object sender, MouseEventArgs e);
        public event MouseMoveEventHandler MouseMoveEvent;
 
        public delegate void MouseDownEventHandler(object sender, MouseEventArgs e);
        public event MouseDownEventHandler MouseDownEvent;
        #endregion
 
    }
}