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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="300"
x:Class="UVtools.WPF.Controls.KernelControl">
<Grid RowDefinitions="Auto" ColumnDefinitions="*,10,Auto">
<TextBox
ToolTip.Tip="The kernel or structuring element used to probe the input image.

A structuring element is a matrix that identifies the pixel in the image being processed and defines the neighborhood used in the processing of each pixel."
VerticalAlignment="Stretch"
AcceptsReturn="True"
Watermark="Kernel matrix"
UseFloatingWatermark="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Text="{Binding MatrixText}"
/>
<Grid
Grid.Column="2"
RowDefinitions="Auto,10,Auto,10,Auto,20,Auto"
ColumnDefinitions="Auto,10,Auto,10,Auto,10,Auto">
<TextBlock
HorizontalAlignment="Right"
VerticalAlignment="Center"
Text="Shape:"/>
<ComboBox
Grid.Row="0" Grid.ColumnSpan="5"
Grid.Column="2"
SelectedItem="{Binding SelectedKernelShape}"
Items="{Binding KernelShapes}"
Width="160"
/>
<TextBlock
Grid.Column="0"
Grid.Row="2"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Text="Size:"/>
<NumericUpDown
Grid.Column="2"
Grid.Row="2"
VerticalAlignment="Center"
Minimum="2"
Value="{Binding MatrixWidth}"
/>
<TextBlock
Grid.Column="4"
Grid.Row="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="x"/>
<NumericUpDown
Grid.Column="6"
Grid.Row="2"
VerticalAlignment="Center"
Minimum="2"
Value="{Binding MatrixHeight}"
/>
<TextBlock
Grid.Column="0"
Grid.Row="4"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Text="Anchor X:"/>
<NumericUpDown
Grid.Column="2"
Grid.Row="4"
VerticalAlignment="Center"
Minimum="-1"
ToolTip.Tip="X coordinate of the kenel origin, -1 for auto-center."
Value="{Binding AnchorX}"
/>
<TextBlock
Grid.Column="4"
Grid.Row="4"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Text="Y:"/>
<NumericUpDown
Grid.Column="6"
Grid.Row="4"
VerticalAlignment="Center"
Minimum="-1"
ToolTip.Tip="Y coordinate of the kernel origin, -1 for auto-center."
Value="{Binding AnchorY}"
/>
<Button
Grid.Column="0"
Grid.Row="6"
Grid.ColumnSpan="3"
Padding="10"
Content="Generate"
Command="{Binding GenerateKernel}"
/>
<Button
Grid.Column="4"
Grid.Row="6"
Grid.ColumnSpan="3"
Padding="10"
Content="Reset"
Command="{Binding ResetKernel}"
/>
</Grid>
</Grid>
</UserControl>
|