Files
XplorePlane/XP.Common/Controls/ImageHistogram/ImageHistogramControl.xaml
T
2026-08-04 14:14:24 +08:00

83 lines
5.0 KiB
XML

<UserControl x:Class="XP.Common.Controls.ImageHistogram.ImageHistogramControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:loc="clr-namespace:XP.Common.Localization.Extensions"
xmlns:local="clr-namespace:XP.Common.Controls.ImageHistogram"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="200" d:DesignWidth="400"
ToolTip="双击放大/还原直方图,滚轮调整大小">
<UserControl.Resources>
<local:FrequencyLabelConverter x:Key="FreqConverter"/>
</UserControl.Resources>
<Grid>
<!-- 图表控件 | Chart control -->
<telerik:RadCartesianChart x:Name="HistogramChart" Padding="0">
<telerik:RadCartesianChart.EmptyContent>
<TextBlock/>
</telerik:RadCartesianChart.EmptyContent>
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:LinearAxis x:Name="XAxis"
Minimum="0"
Maximum="255"
MajorStep="64"
FontSize="9">
<telerik:LinearAxis.LabelTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource FreqConverter}}"/>
</DataTemplate>
</telerik:LinearAxis.LabelTemplate>
</telerik:LinearAxis>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:LinearAxis x:Name="YAxis"
Minimum="0"
Maximum="1"
FontSize="9">
<telerik:LinearAxis.LabelTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource FreqConverter}}"/>
</DataTemplate>
</telerik:LinearAxis.LabelTemplate>
</telerik:LinearAxis>
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Series>
<telerik:ScatterAreaSeries x:Name="HistogramBarSeries"
XValueBinding="GrayLevel"
YValueBinding="Frequency"
Fill="#CC1545CC"
Stroke="#FF0D2F9E"
StrokeThickness="1"/>
<telerik:ScatterPointSeries x:Name="PeakLabelSeries"
XValueBinding="GrayLevel"
YValueBinding="Frequency"
IsHitTestVisible="False">
<telerik:ScatterPointSeries.PointTemplate>
<DataTemplate>
<TextBlock Text="{Binding Label}"
Foreground="#FFE53935"
FontSize="10"
FontWeight="Bold"
Margin="{Binding LabelMargin}"
HorizontalAlignment="Center"/>
</DataTemplate>
</telerik:ScatterPointSeries.PointTemplate>
</telerik:ScatterPointSeries>
<telerik:ScatterLineSeries x:Name="BgaLowThresholdSeries" XValueBinding="GrayLevel" YValueBinding="Frequency" Stroke="#FFFF7043" StrokeThickness="1" IsHitTestVisible="False" />
<telerik:ScatterLineSeries x:Name="BgaHighThresholdSeries" XValueBinding="GrayLevel" YValueBinding="Frequency" Stroke="#FFE53935" StrokeThickness="1" IsHitTestVisible="False" />
<telerik:ScatterLineSeries x:Name="VoidLowThresholdSeries" XValueBinding="GrayLevel" YValueBinding="Frequency" Stroke="#FFFFA000" StrokeThickness="1" IsHitTestVisible="False" />
<telerik:ScatterLineSeries x:Name="VoidHighThresholdSeries" XValueBinding="GrayLevel" YValueBinding="Frequency" Stroke="#FF8E24AA" StrokeThickness="1" IsHitTestVisible="False" />
</telerik:RadCartesianChart.Series>
</telerik:RadCartesianChart>
<TextBlock x:Name="NoDataPlaceholder"
Text="{loc:Localization Histogram_NoData}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="12"
Foreground="#9E9E9E"
Visibility="Visible"/>
</Grid>
</UserControl>