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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace RealTimeGraphEx.ExtensionMethods
{
public static class BrushExtensions
{
public static SharpDX.Direct2D1.Brush ToDxBrush(this Brush brush, SharpDX.Direct2D1.RenderTarget renderTarget)
{
if (brush == null) return null;
if (brush.GetType() == typeof(SolidColorBrush))
{
return new SharpDX.Direct2D1.SolidColorBrush(renderTarget, new SharpDX.Color4((brush as SolidColorBrush).Color.ToRgba()), new SharpDX.Direct2D1.BrushProperties() { Opacity = (float)brush.Opacity });
}
else if (brush.GetType() == typeof(LinearGradientBrush))
{
var linear = brush as LinearGradientBrush;
var startPoint = new SharpDX.Vector2((float)linear.StartPoint.X, (float)linear.StartPoint.Y);
var endPoint = new SharpDX.Vector2((float)linear.EndPoint.X, (float)linear.EndPoint.Y);
SharpDX.Direct2D1.GradientStop[] stops = new SharpDX.Direct2D1.GradientStop[linear.GradientStops.Count];
for (int i = 0; i < linear.GradientStops.Count; i++)
{
stops[i] = new SharpDX.Direct2D1.GradientStop();
stops[i].Color = new SharpDX.Color4(linear.GradientStops[i].Color.ToRgba());
stops[i].Position = (float)linear.GradientStops[i].Offset;
}
var dxBrush = new SharpDX.Direct2D1.LinearGradientBrush(
renderTarget,
new SharpDX.Direct2D1.LinearGradientBrushProperties()
{
StartPoint = startPoint,
EndPoint = endPoint,
},
new SharpDX.Direct2D1.GradientStopCollection(renderTarget, stops));
return dxBrush;
// var linearGradientBrush = new SharpDX.Direct2D1.LinearGradientBrush(renderTarget, new SharpDX.Direct2D1.LinearGradientBrushProperties()
// {
// StartPoint = new SharpDX.Vector2(50, 0),
// EndPoint = new SharpDX.Vector2(450, 0),
// },
//new SharpDX.Direct2D1.GradientStopCollection(renderTarget, new SharpDX.Direct2D1.GradientStop[]
// {
// new SharpDX.Direct2D1.GradientStop()
// {
// Color = SharpDX.Color.Blue,
// Position = 0,
// },
// new SharpDX.Direct2D1.GradientStop()
// {
// Color = SharpDX.Color.Green,
// Position = 1,
// }
// }));
// return linearGradientBrush;
}
else
{
return null;
}
}
}
}
|