WinformsАктуально?
Winforms or WPF?
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
public class RoundButton : Control
{
private int _cornerRadius = 50;
public int CornerRadius
{
get { return _cornerRadius; }
set { _cornerRadius = value; this.Invalidate(); }
}
private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias;
public SmoothingMode SmoothingMode
{
get { return _smoothingMode; }
set { _smoothingMode = value; this.Invalidate(); }
}
GraphicsPath GetRoundPath(RectangleF Rect, int radius)
{
float r2 = radius / 2f;
GraphicsPath GraphPath = new GraphicsPath();
GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90);
GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y);
GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90);
GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2);
GraphPath.AddArc(Rect.X + Rect.Width - radius,
Rect.Y + Rect.Height - radius, radius, radius, 0, 90);
GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height);
GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90);
GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2);
GraphPath.CloseFigure();
return GraphPath;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.SmoothingMode = _smoothingMode;
RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height);
GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius);
this.Region = new Region(GraphPath);
using (Pen pen = new Pen(Color.Lime, 1.75f))
{
pen.Alignment = PenAlignment.Inset;
e.Graphics.DrawPath(pen, GraphPath);
}
}
}
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ePOSOne.btnProduct
{
public class Button_WOC : Button
{
private Color _borderColor = Color.Silver;
private Color _onHoverBorderColor = Color.Gray;
private Color _buttonColor = Color.Red;
private Color _onHoverButtonColor = Color.Yellow;
private Color _textColor = Color.White;
private Color _onHoverTextColor = Color.Gray;
private bool _isHovering;
private int _borderThickness = 6;
private int _borderThicknessByTwo = 3;
public Button_WOC()
{
DoubleBuffered = true;
MouseEnter += (sender, e) =>
{
_isHovering = true;
Invalidate();
};
MouseLeave += (sender, e) =>
{
_isHovering = false;
Invalidate();
};
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Brush brush = new SolidBrush(_isHovering ? _onHoverBorderColor : _borderColor);
//Border
g.FillEllipse(brush, 0, 0, Height, Height);
g.FillEllipse(brush, Width - Height, 0, Height, Height);
g.FillRectangle(brush, Height / 2, 0, Width - Height, Height);
brush.Dispose();
brush = new SolidBrush(_isHovering ? _onHoverButtonColor : _buttonColor);
//Inner part. Button itself
g.FillEllipse(brush, _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness,
Height - _borderThickness);
g.FillEllipse(brush, (Width - Height) + _borderThicknessByTwo, _borderThicknessByTwo,
Height - _borderThickness, Height - _borderThickness);
g.FillRectangle(brush, Height / 2 + _borderThicknessByTwo, _borderThicknessByTwo,
Width - Height - _borderThickness, Height - _borderThickness);
brush.Dispose();
brush = new SolidBrush(_isHovering ? _onHoverTextColor : _textColor);
//Button Text
SizeF stringSize = g.MeasureString(Text, Font);
g.DrawString(Text, Font, brush, (Width - stringSize.Width) / 2, (Height - stringSize.Height) / 2);
}
public Color BorderColor
{
get => _borderColor;
set
{
_borderColor = value;
Invalidate();
}
}
public Color OnHoverBorderColor
{
get => _onHoverBorderColor;
set
{
_onHoverBorderColor = value;
Invalidate();
}
}
public Color ButtonColor
{
get => _buttonColor;
set
{
_buttonColor = value;
Invalidate();
}
}
public Color OnHoverButtonColor
{
get => _onHoverButtonColor;
set
{
_onHoverButtonColor = value;
Invalidate();
}
}
public Color TextColor
{
get => _textColor;
set
{
_textColor = value;
Invalidate();
}
}
public Color OnHoverTextColor
{
get => _onHoverTextColor;
set
{
_onHoverTextColor = value;
Invalidate();
}
}
}
}
у меня есть gunaпопробуй 2 этих скрипта
(проверял, но почему-то toolbox не находил)
1 script:using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; public class RoundButton : Control { private int _cornerRadius = 50; public int CornerRadius { get { return _cornerRadius; } set { _cornerRadius = value; this.Invalidate(); } } private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias; public SmoothingMode SmoothingMode { get { return _smoothingMode; } set { _smoothingMode = value; this.Invalidate(); } } GraphicsPath GetRoundPath(RectangleF Rect, int radius) { float r2 = radius / 2f; GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90); GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90); GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y + Rect.Height - radius, radius, radius, 0, 90); GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90); GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2); GraphPath.CloseFigure(); return GraphPath; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.SmoothingMode = _smoothingMode; RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height); GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius); this.Region = new Region(GraphPath); using (Pen pen = new Pen(Color.Lime, 1.75f)) { pen.Alignment = PenAlignment.Inset; e.Graphics.DrawPath(pen, GraphPath); } } }
просто создай скрипт cs и вставь из двух2 script:using System; using System.Drawing; using System.Windows.Forms; namespace ePOSOne.btnProduct { public class Button_WOC : Button { private Color _borderColor = Color.Silver; private Color _onHoverBorderColor = Color.Gray; private Color _buttonColor = Color.Red; private Color _onHoverButtonColor = Color.Yellow; private Color _textColor = Color.White; private Color _onHoverTextColor = Color.Gray; private bool _isHovering; private int _borderThickness = 6; private int _borderThicknessByTwo = 3; public Button_WOC() { DoubleBuffered = true; MouseEnter += (sender, e) => { _isHovering = true; Invalidate(); }; MouseLeave += (sender, e) => { _isHovering = false; Invalidate(); }; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; Brush brush = new SolidBrush(_isHovering ? _onHoverBorderColor : _borderColor); //Border g.FillEllipse(brush, 0, 0, Height, Height); g.FillEllipse(brush, Width - Height, 0, Height, Height); g.FillRectangle(brush, Height / 2, 0, Width - Height, Height); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverButtonColor : _buttonColor); //Inner part. Button itself g.FillEllipse(brush, _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillEllipse(brush, (Width - Height) + _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillRectangle(brush, Height / 2 + _borderThicknessByTwo, _borderThicknessByTwo, Width - Height - _borderThickness, Height - _borderThickness); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverTextColor : _textColor); //Button Text SizeF stringSize = g.MeasureString(Text, Font); g.DrawString(Text, Font, brush, (Width - stringSize.Width) / 2, (Height - stringSize.Height) / 2); } public Color BorderColor { get => _borderColor; set { _borderColor = value; Invalidate(); } } public Color OnHoverBorderColor { get => _onHoverBorderColor; set { _onHoverBorderColor = value; Invalidate(); } } public Color ButtonColor { get => _buttonColor; set { _buttonColor = value; Invalidate(); } } public Color OnHoverButtonColor { get => _onHoverButtonColor; set { _onHoverButtonColor = value; Invalidate(); } } public Color TextColor { get => _textColor; set { _textColor = value; Invalidate(); } } public Color OnHoverTextColor { get => _onHoverTextColor; set { _onHoverTextColor = value; Invalidate(); } } } }
и нажми ctrl+shift+b или build (сборка) -> Build Solution(собрать решение)
2 вариант
просто скачать кряк bunifu или guna 2 чтоб не мучаться с другими компонентами
вроде ты не поставил namespaceпопробуй 2 этих скрипта
(проверял, но почему-то toolbox не находил)
1 script:using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; public class RoundButton : Control { private int _cornerRadius = 50; public int CornerRadius { get { return _cornerRadius; } set { _cornerRadius = value; this.Invalidate(); } } private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias; public SmoothingMode SmoothingMode { get { return _smoothingMode; } set { _smoothingMode = value; this.Invalidate(); } } GraphicsPath GetRoundPath(RectangleF Rect, int radius) { float r2 = radius / 2f; GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90); GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90); GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y + Rect.Height - radius, radius, radius, 0, 90); GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90); GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2); GraphPath.CloseFigure(); return GraphPath; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.SmoothingMode = _smoothingMode; RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height); GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius); this.Region = new Region(GraphPath); using (Pen pen = new Pen(Color.Lime, 1.75f)) { pen.Alignment = PenAlignment.Inset; e.Graphics.DrawPath(pen, GraphPath); } } }
просто создай скрипт cs и вставь из двух2 script:using System; using System.Drawing; using System.Windows.Forms; namespace ePOSOne.btnProduct { public class Button_WOC : Button { private Color _borderColor = Color.Silver; private Color _onHoverBorderColor = Color.Gray; private Color _buttonColor = Color.Red; private Color _onHoverButtonColor = Color.Yellow; private Color _textColor = Color.White; private Color _onHoverTextColor = Color.Gray; private bool _isHovering; private int _borderThickness = 6; private int _borderThicknessByTwo = 3; public Button_WOC() { DoubleBuffered = true; MouseEnter += (sender, e) => { _isHovering = true; Invalidate(); }; MouseLeave += (sender, e) => { _isHovering = false; Invalidate(); }; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; Brush brush = new SolidBrush(_isHovering ? _onHoverBorderColor : _borderColor); //Border g.FillEllipse(brush, 0, 0, Height, Height); g.FillEllipse(brush, Width - Height, 0, Height, Height); g.FillRectangle(brush, Height / 2, 0, Width - Height, Height); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverButtonColor : _buttonColor); //Inner part. Button itself g.FillEllipse(brush, _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillEllipse(brush, (Width - Height) + _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillRectangle(brush, Height / 2 + _borderThicknessByTwo, _borderThicknessByTwo, Width - Height - _borderThickness, Height - _borderThickness); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverTextColor : _textColor); //Button Text SizeF stringSize = g.MeasureString(Text, Font); g.DrawString(Text, Font, brush, (Width - stringSize.Width) / 2, (Height - stringSize.Height) / 2); } public Color BorderColor { get => _borderColor; set { _borderColor = value; Invalidate(); } } public Color OnHoverBorderColor { get => _onHoverBorderColor; set { _onHoverBorderColor = value; Invalidate(); } } public Color ButtonColor { get => _buttonColor; set { _buttonColor = value; Invalidate(); } } public Color OnHoverButtonColor { get => _onHoverButtonColor; set { _onHoverButtonColor = value; Invalidate(); } } public Color TextColor { get => _textColor; set { _textColor = value; Invalidate(); } } public Color OnHoverTextColor { get => _onHoverTextColor; set { _onHoverTextColor = value; Invalidate(); } } } }
и нажми ctrl+shift+b или build (сборка) -> Build Solution(собрать решение)
2 вариант
просто скачать кряк bunifu или guna 2 чтоб не мучаться с другими компонентами
public class RoundButton : Control
{
private int _cornerRadius = 50;
public int CornerRadius
{
get { return _cornerRadius; }
set { _cornerRadius = value; this.Invalidate(); }
}
private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias;
public SmoothingMode SmoothingMode
{
get { return _smoothingMode; }
set { _smoothingMode = value; this.Invalidate(); }
}
GraphicsPath GetRoundPath(RectangleF Rect, int radius)
{
float r2 = radius / 2f;
GraphicsPath GraphPath = new GraphicsPath();
GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90);
GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y);
GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90);
GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2);
GraphPath.AddArc(Rect.X + Rect.Width - radius,
Rect.Y + Rect.Height - radius, radius, radius, 0, 90);
GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height);
GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90);
GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2);
GraphPath.CloseFigure();
return GraphPath;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.SmoothingMode = _smoothingMode;
RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height);
GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius);
this.Region = new Region(GraphPath);
using (Pen pen = new Pen(Color.Lime, 1.75f))
{
pen.Alignment = PenAlignment.Inset;
e.Graphics.DrawPath(pen, GraphPath);
}
}
}
попробуй 2 этих скрипта
(проверял, но почему-то toolbox не находил)
1 script:using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; public class RoundButton : Control { private int _cornerRadius = 50; public int CornerRadius { get { return _cornerRadius; } set { _cornerRadius = value; this.Invalidate(); } } private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias; public SmoothingMode SmoothingMode { get { return _smoothingMode; } set { _smoothingMode = value; this.Invalidate(); } } GraphicsPath GetRoundPath(RectangleF Rect, int radius) { float r2 = radius / 2f; GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90); GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90); GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y + Rect.Height - radius, radius, radius, 0, 90); GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90); GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2); GraphPath.CloseFigure(); return GraphPath; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.SmoothingMode = _smoothingMode; RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height); GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius); this.Region = new Region(GraphPath); using (Pen pen = new Pen(Color.Lime, 1.75f)) { pen.Alignment = PenAlignment.Inset; e.Graphics.DrawPath(pen, GraphPath); } } }
просто создай скрипт cs и вставь из двух2 script:using System; using System.Drawing; using System.Windows.Forms; namespace ePOSOne.btnProduct { public class Button_WOC : Button { private Color _borderColor = Color.Silver; private Color _onHoverBorderColor = Color.Gray; private Color _buttonColor = Color.Red; private Color _onHoverButtonColor = Color.Yellow; private Color _textColor = Color.White; private Color _onHoverTextColor = Color.Gray; private bool _isHovering; private int _borderThickness = 6; private int _borderThicknessByTwo = 3; public Button_WOC() { DoubleBuffered = true; MouseEnter += (sender, e) => { _isHovering = true; Invalidate(); }; MouseLeave += (sender, e) => { _isHovering = false; Invalidate(); }; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; Brush brush = new SolidBrush(_isHovering ? _onHoverBorderColor : _borderColor); //Border g.FillEllipse(brush, 0, 0, Height, Height); g.FillEllipse(brush, Width - Height, 0, Height, Height); g.FillRectangle(brush, Height / 2, 0, Width - Height, Height); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverButtonColor : _buttonColor); //Inner part. Button itself g.FillEllipse(brush, _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillEllipse(brush, (Width - Height) + _borderThicknessByTwo, _borderThicknessByTwo, Height - _borderThickness, Height - _borderThickness); g.FillRectangle(brush, Height / 2 + _borderThicknessByTwo, _borderThicknessByTwo, Width - Height - _borderThickness, Height - _borderThickness); brush.Dispose(); brush = new SolidBrush(_isHovering ? _onHoverTextColor : _textColor); //Button Text SizeF stringSize = g.MeasureString(Text, Font); g.DrawString(Text, Font, brush, (Width - stringSize.Width) / 2, (Height - stringSize.Height) / 2); } public Color BorderColor { get => _borderColor; set { _borderColor = value; Invalidate(); } } public Color OnHoverBorderColor { get => _onHoverBorderColor; set { _onHoverBorderColor = value; Invalidate(); } } public Color ButtonColor { get => _buttonColor; set { _buttonColor = value; Invalidate(); } } public Color OnHoverButtonColor { get => _onHoverButtonColor; set { _onHoverButtonColor = value; Invalidate(); } } public Color TextColor { get => _textColor; set { _textColor = value; Invalidate(); } } public Color OnHoverTextColor { get => _onHoverTextColor; set { _onHoverTextColor = value; Invalidate(); } } } }
и нажми ctrl+shift+b или build (сборка) -> Build Solution(собрать решение)
2 вариант
просто скачать кряк bunifu или guna 2 чтоб не мучаться с другими компонентами
прост создать класс нада было и вставить уже этот код не удалять namespaceу меня есть guna
вроде ты не поставил namespace
Код:public class RoundButton : Control { private int _cornerRadius = 50; public int CornerRadius { get { return _cornerRadius; } set { _cornerRadius = value; this.Invalidate(); } } private SmoothingMode _smoothingMode = SmoothingMode.AntiAlias; public SmoothingMode SmoothingMode { get { return _smoothingMode; } set { _smoothingMode = value; this.Invalidate(); } } GraphicsPath GetRoundPath(RectangleF Rect, int radius) { float r2 = radius / 2f; GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90); GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90); GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y + Rect.Height - radius, radius, radius, 0, 90); GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90); GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2); GraphPath.CloseFigure(); return GraphPath; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.SmoothingMode = _smoothingMode; RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height); GraphicsPath GraphPath = GetRoundPath(Rect, _cornerRadius); this.Region = new Region(GraphPath); using (Pen pen = new Pen(Color.Lime, 1.75f)) { pen.Alignment = PenAlignment.Inset; e.Graphics.DrawPath(pen, GraphPath); } } }
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz