Extensions.cs
1.86 KB
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.Drawing;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media.Imaging;
using WindowsPoint = System.Windows.Point;
using DrawingPoint = System.Drawing.Point;
namespace Touchless.Shared.Extensions
{
public static class Extensions
{
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> items, Action<T> action)
{
foreach (T item in items)
{
action(item);
}
return items;
}
public static void IfNotNull<T>(this T item, Action<T> action)
{
if (item != null)
{
action(item);
}
}
public static WindowsPoint ToWindowsPoint(this DrawingPoint p)
{
return new WindowsPoint
{
X = p.X,
Y = p.Y
};
}
public static DrawingPoint ToDrawingPoint(this WindowsPoint p)
{
return new DrawingPoint
{
X = (int) p.X,
Y = (int) p.Y
};
}
[DllImport("gdi32")]
private static extern int DeleteObject(IntPtr o);
public static BitmapSource ToBitmapSource(this Bitmap source)
{
BitmapSource bs = null;
IntPtr ip = source.GetHbitmap();
try
{
bs = Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(ip);
}
return bs;
}
}
}