-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameButton.cs
87 lines (82 loc) · 3.46 KB
/
GameButton.cs
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
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
namespace MMayinTarlasi
{
class GameButton : Button, ICloneable
{
public byte GameValue { get; set; }
public byte CordX { get; set; }
public byte CordY { get; set; }
public bool mine = false;
public bool prevention = false;
StringFormat formatText = new StringFormat(StringFormatFlags.NoClip);
public object Clone()
{
GameButton copyButton = Activator.CreateInstance<GameButton>();//önce GameMineButton Bir instance oluşturulur.
PropertyInfo[] piList = this.GetType()//mevcut içerinde bulunduğumuz sınıfın property leri çekilir.
.GetProperties();
//mevcut property' lerden kopyalanmak istenen property ler belirtilir. Ancak bu örnekte hepsine gerek yoktur.
//çünkü zaten oluşturuduğumuz copy sınıfının default değerleri içerisinde bulunduğumuz sınıf tarafından değiştirilmemektedir.
//uygulama gereksinimine göre hepsi de kopyalanabilir.
List<string> attributeList = new List<string>
{
"Font",
"FlatStyle",
"Size",
"BackColor",
"Margin",
"BackgroundImage",
"Padding",
"Text",
"TabStop",
"ForeColor",
"TabIndex",
"Paint",
"Enabled",
"BackgroundImageLayout",
"Visible"
};
foreach (PropertyInfo pi in piList.Where(i=>attributeList.Contains(i.Name)))//içerisinde bulunduğumuz sınıfın propertyleri içerisinde dönülmeye başlanır.
{
if (pi.GetValue(copyButton, null) != pi.GetValue(this, null))//sırayla yeni copy nesnemize atanır.
{
if (pi.CanWrite)
{
pi.SetValue(copyButton, pi.GetValue(this, null), null);
}
}
}
return copyButton;
}
// Butonun Disabled rengi sistemde gri ve sabit, OnPaint override edilerek yeniden biçimlendiriliyor.
protected override void OnPaint(PaintEventArgs pe)
{
if( base.Enabled )
{
base.OnPaint(pe);
return;
}
else
{
// Calling the base class OnPaint
base.OnPaint(pe);
// Setup the Formatting for the text
formatText.Alignment = StringAlignment.Center;
formatText.Trimming = StringTrimming.Character;
formatText.LineAlignment = StringAlignment.Center;
// Drawing the button yoursel. The background is color
// pe.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(51, 55, 69)), pe.ClipRectangle);
// Draw the line around the button
// pe.Graphics.DrawRectangle(new Pen(base.FlatAppearance.BorderColor, 1), 0, 0, base.Width - 1, base.Height - 1);
// Draw the text in the button in color
pe.Graphics.DrawString(base.Text, base.Font, new SolidBrush(base.ForeColor),
new RectangleF(0F, 0F, base.Width, base.Height), formatText);
return;
}
}
}
}