/
Form1.cs
76 lines (64 loc) · 3.08 KB
/
Form1.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
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraGauges.Core.Primitive;
using DevExpress.XtraGauges.Core.Model;
namespace XtraGauges_CustomDraw {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
Timer timer;
int animationLockCounter = 0;
bool enableCustomDraw = false;
private void arcScaleBackgroundLayerComponent1_CustomDrawElement(object sender, CustomDrawElementEventArgs e) {
if (enableCustomDraw) {
RectangleF bounds = RectangleF.Inflate(e.Info.BoundBox, -15, -15);
e.Context.Graphics.FillEllipse(Brushes.Black, bounds);
bounds.Inflate(-2, -2);
e.Context.Graphics.SetClip(new RectangleF(bounds.Left + bounds.Width * 0.5f,
bounds.Top, bounds.Width * 0.5f, bounds.Height));
e.Context.Graphics.FillEllipse(Brushes.White, bounds);
e.Context.Graphics.ResetClip();
e.Context.Graphics.FillEllipse(Brushes.White, new RectangleF(bounds.Left +
+bounds.Width * 0.25f, bounds.Top, bounds.Width * 0.5f, bounds.Height * 0.5f));
e.Context.Graphics.FillEllipse(Brushes.Black, new RectangleF(bounds.Left + bounds.Width * 0.25f,
bounds.Top + bounds.Height * 0.5f, bounds.Width * 0.5f, bounds.Height * 0.5f));
e.Handled = true;
}
}
private void arcScaleNeedleComponent1_CustomDrawElement(object sender, CustomDrawElementEventArgs e) {
if (enableCustomDraw) {
e.Context.Graphics.FillEllipse(Brushes.White, new RectangleF(50, 112.5f, 25, 25));
e.Context.Graphics.FillEllipse(Brushes.Black, new RectangleF(175, 112.5f, 25, 25));
e.Handled = true;
}
}
private void arcScaleComponent1_CustomDrawElement(object sender, CustomDrawElementEventArgs e) {
if (enableCustomDraw)
e.Handled = true;
}
private void checkEdit1_CheckStateChanged(object sender, EventArgs e) {
enableCustomDraw = checkEdit1.Checked;
arcScaleBackgroundLayerComponent1.Self.ResetCache(CacheKeys.RenderedImage);
gaugeControl1.Refresh();
}
private void Form1_Load(object sender, EventArgs e) {
timer = new Timer();
timer.Interval = 150;
timer.Tick += new EventHandler(OnTimerTick);
timer.Start();
}
void OnTimerTick(object sender, EventArgs e) {
if (animationLockCounter > 0) return;
animationLockCounter++;
arcScaleComponent1.Value = AnimateScaleValue(arcScaleComponent1, 0.05f);
animationLockCounter--;
}
float AnimateScaleValue(IBaseScale scale, float factor) {
Random random = new Random(DateTime.Now.Millisecond);
float deviation = ((float)random.NextDouble() - scale.Percent);
return (scale.Value + (scale.ScaleLength * factor) * deviation);
}
}
}