예제 #1
0
        protected override void OnPaint(PaintEventArgs pevent)
        {
            var g = pevent.Graphics;

            g.Clear(BackColor);

            if (Enabled && MouseState != MouseState.None)
            {
                g.FillRoundedRectangle(
                    MouseState.HasFlag(MouseState.Pushed) ? AppColors.PressedBrush : AppColors.HoverBrush,
                    pevent.ClipRectangle, Radius);
            }

            if (ShowBorder || (Enabled && MouseState != MouseState.None))
            {
                g.DrawRoundedRectangle(
                    MouseState.HasFlag(MouseState.Pushed) ? AppColors.PressedPen : AppColors.HoverPen,
                    pevent.ClipRectangle, Radius);
            }

            if (Image != null)
            {
                g.DrawImageUnscaled(Image,
                                    (pevent.ClipRectangle.Width - Image.Width) / 2,
                                    (pevent.ClipRectangle.Height - Image.Height) / 2
                                    );
            }

            if (!string.IsNullOrEmpty(Text))
            {
                var size = g.MeasureString(Text, Font);
                using (var brush = new SolidBrush(Enabled ? ForeColor : Color.Gray))
                {
                    g.DrawString(Text, Font, brush,
                                 (pevent.ClipRectangle.Width - size.Width) / 2,
                                 (pevent.ClipRectangle.Height - size.Height) / 2,
                                 new StringFormat
                    {
                        Trimming    = StringTrimming.EllipsisCharacter,
                        FormatFlags = StringFormatFlags.LineLimit | StringFormatFlags.NoWrap
                    });
                }
            }
        }