Dreamine.UI.WinForms
1.0.1
Dreamine.UI.WinForms 사용자 인터페이스 기능과 구성 요소를 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
DreamineRadioButton.cs
이 파일의 문서화 페이지로 가기
1
using
System.Drawing;
2
using
System.Drawing.Drawing2D;
3
using
Dreamine.UI.WinForms
;
4
5
namespace
Dreamine.UI.WinForms.Controls
;
6
15
public
class
DreamineRadioButton
: Control
16
{
25
private
bool
_isHover
;
34
private
bool
_isChecked
;
35
44
public
bool
IsChecked
45
{
46
get
=>
_isChecked
;
47
set
48
{
49
if
(
_isChecked
== value)
return
;
50
_isChecked
= value;
51
Invalidate();
52
if
(value)
UncheckSiblings
();
53
CheckedChanged
?.Invoke(
this
, EventArgs.Empty);
54
}
55
}
56
65
private
string
_content
=
string
.Empty;
74
public
string
Content
75
{
76
get
=>
_content
;
77
set
{
_content
= value; Invalidate(); }
78
}
79
88
public
string
GroupName
{
get
;
set
; } =
string
.Empty;
89
98
public
event
EventHandler?
CheckedChanged
;
99
108
private
const
int
BulletSize
= 16;
117
private
const
int
BulletMargin
= 2;
118
127
public
DreamineRadioButton
()
128
{
129
SetStyle(
130
ControlStyles.AllPaintingInWmPaint |
131
ControlStyles.UserPaint |
132
ControlStyles.DoubleBuffer |
133
ControlStyles.ResizeRedraw |
134
ControlStyles.SupportsTransparentBackColor,
true
);
135
136
BackColor = Color.Transparent;
137
ForeColor =
DreamineTheme
.
TextPrimary
;
138
Font =
new
Font(
"Segoe UI"
, 10f, FontStyle.Regular, GraphicsUnit.Point);
139
Height = 24;
140
Cursor = Cursors.Hand;
141
}
142
159
protected
override
void
OnMouseEnter
(EventArgs e) { base.OnMouseEnter(e);
_isHover
=
true
; Invalidate(); }
176
protected
override
void
OnMouseLeave
(EventArgs e) { base.OnMouseLeave(e);
_isHover
=
false
; Invalidate(); }
177
194
protected
override
void
OnMouseUp
(MouseEventArgs e)
195
{
196
base.OnMouseUp(e);
197
if
(Enabled && e.Button == MouseButtons.Left && ClientRectangle.Contains(e.Location))
198
IsChecked
=
true
;
199
}
200
209
private
void
UncheckSiblings
()
210
{
211
if
(Parent ==
null
||
string
.IsNullOrEmpty(
GroupName
))
return
;
212
foreach
(Control c
in
Parent.Controls)
213
{
214
if
(c !=
this
&& c is
DreamineRadioButton
rb &&
215
rb.GroupName ==
GroupName
&& rb.IsChecked)
216
{
217
rb._isChecked =
false
;
218
rb.Invalidate();
219
rb.CheckedChanged?.Invoke(rb, EventArgs.Empty);
220
}
221
}
222
}
223
240
protected
override
void
OnPaint
(PaintEventArgs e)
241
{
242
var g = e.Graphics;
243
g.SmoothingMode = SmoothingMode.AntiAlias;
244
245
int
x =
BulletMargin
, y = (Height -
BulletSize
) / 2;
246
var bulletRect =
new
Rectangle(x, y,
BulletSize
,
BulletSize
);
247
248
// Outer circle
249
var borderColor =
_isChecked
||
_isHover
?
DreamineTheme.BorderFocus
:
DreamineTheme
.
BorderNormal
;
250
using
var bgBrush =
new
SolidBrush(
_isChecked
?
DreamineTheme
.
AccentBlue
:
DreamineTheme
.
InputBackground
);
251
using
var borderPen =
new
Pen(borderColor, 1.5f);
252
g.FillEllipse(bgBrush, bulletRect);
253
g.DrawEllipse(borderPen,
new
Rectangle(x, y,
BulletSize
- 1,
BulletSize
- 1));
254
255
// Inner dot
256
if
(
_isChecked
)
257
{
258
int
dotSize = 6, dotX = x + (
BulletSize
- dotSize) / 2, dotY = y + (
BulletSize
- dotSize) / 2;
259
using
var dotBrush =
new
SolidBrush(Color.White);
260
g.FillEllipse(dotBrush, dotX, dotY, dotSize, dotSize);
261
}
262
263
// Label
264
using
var brush =
new
SolidBrush(Enabled ? ForeColor :
DreamineTheme
.
TextSecondary
);
265
int
textX =
BulletMargin
+
BulletSize
+ 6;
266
var sf =
new
StringFormat { LineAlignment = StringAlignment.Center };
267
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
268
g.DrawString(
_content
, Font, brush,
new
Rectangle(textX, 0, Width - textX, Height), sf);
269
}
270
279
protected
override
Size
DefaultSize
=>
new
(160, 24);
280
}
Dreamine.UI.WinForms
Definition
DreamineButton.cs:6
Dreamine.UI.WinForms.Controls
Definition
DreamineButton.cs:6
Dreamine.UI.WinForms.Controls.DreamineRadioButton.CheckedChanged
EventHandler? CheckedChanged
Definition
DreamineRadioButton.cs:98
Dreamine.UI.WinForms.Controls.DreamineRadioButton._content
string _content
Definition
DreamineRadioButton.cs:65
Dreamine.UI.WinForms.Controls.DreamineRadioButton.IsChecked
bool IsChecked
Definition
DreamineRadioButton.cs:45
Dreamine.UI.WinForms.Controls.DreamineRadioButton.DreamineRadioButton
DreamineRadioButton()
Definition
DreamineRadioButton.cs:127
Dreamine.UI.WinForms.Controls.DreamineRadioButton.DefaultSize
override Size DefaultSize
Definition
DreamineRadioButton.cs:279
Dreamine.UI.WinForms.Controls.DreamineRadioButton.BulletSize
const int BulletSize
Definition
DreamineRadioButton.cs:108
Dreamine.UI.WinForms.Controls.DreamineRadioButton.UncheckSiblings
void UncheckSiblings()
Definition
DreamineRadioButton.cs:209
Dreamine.UI.WinForms.Controls.DreamineRadioButton.OnPaint
override void OnPaint(PaintEventArgs e)
Definition
DreamineRadioButton.cs:240
Dreamine.UI.WinForms.Controls.DreamineRadioButton.GroupName
string GroupName
Definition
DreamineRadioButton.cs:88
Dreamine.UI.WinForms.Controls.DreamineRadioButton.Content
string Content
Definition
DreamineRadioButton.cs:75
Dreamine.UI.WinForms.Controls.DreamineRadioButton.BulletMargin
const int BulletMargin
Definition
DreamineRadioButton.cs:117
Dreamine.UI.WinForms.Controls.DreamineRadioButton._isChecked
bool _isChecked
Definition
DreamineRadioButton.cs:34
Dreamine.UI.WinForms.Controls.DreamineRadioButton._isHover
bool _isHover
Definition
DreamineRadioButton.cs:25
Dreamine.UI.WinForms.Controls.DreamineRadioButton.OnMouseLeave
override void OnMouseLeave(EventArgs e)
Definition
DreamineRadioButton.cs:176
Dreamine.UI.WinForms.Controls.DreamineRadioButton.OnMouseEnter
override void OnMouseEnter(EventArgs e)
Definition
DreamineRadioButton.cs:159
Dreamine.UI.WinForms.Controls.DreamineRadioButton.OnMouseUp
override void OnMouseUp(MouseEventArgs e)
Definition
DreamineRadioButton.cs:194
Dreamine.UI.WinForms.DreamineTheme
Definition
DreamineTheme.cs:14
Dreamine.UI.WinForms.DreamineTheme.TextSecondary
static readonly Color TextSecondary
Definition
DreamineTheme.cs:100
Dreamine.UI.WinForms.DreamineTheme.BorderFocus
static readonly Color BorderFocus
Definition
DreamineTheme.cs:80
Dreamine.UI.WinForms.DreamineTheme.TextPrimary
static readonly Color TextPrimary
Definition
DreamineTheme.cs:91
Dreamine.UI.WinForms.DreamineTheme.BorderNormal
static readonly Color BorderNormal
Definition
DreamineTheme.cs:71
Dreamine.UI.WinForms.DreamineTheme.AccentBlue
static readonly Color AccentBlue
Definition
DreamineTheme.cs:129
Dreamine.UI.WinForms.DreamineTheme.InputBackground
static readonly Color InputBackground
Definition
DreamineTheme.cs:42
Controls
DreamineRadioButton.cs
다음에 의해 생성됨 :
1.17.0