wpf直方图的保真度会随着尺寸的减小而降低
我开发了一个简单的直方图控件,可以显示实时图像中灰度颜色(1到256个像素)的分布。该控件在ItemsContainer为ViewBox的ItemsControl中呈现矩形。大多数情况下,一切正常,但是当我调整承载控件的网格列的大小(使用GridSplitter)时,直方图的保真度开始降低 这是直方图在初始状态下的几张照片,然后当它水平调整大小时(注意绿色矩形森林中的黑色垂直线…越小,情况越糟): 下面是渲染直方图的XAML:wpf直方图的保真度会随着尺寸的减小而降低,wpf,histogram,Wpf,Histogram,我开发了一个简单的直方图控件,可以显示实时图像中灰度颜色(1到256个像素)的分布。该控件在ItemsContainer为ViewBox的ItemsControl中呈现矩形。大多数情况下,一切正常,但是当我调整承载控件的网格列的大小(使用GridSplitter)时,直方图的保真度开始降低 这是直方图在初始状态下的几张照片,然后当它水平调整大小时(注意绿色矩形森林中的黑色垂直线…越小,情况越糟): 下面是渲染直方图的XAML: <ItemsControl x:Name="_Hist
<ItemsControl x:Name="_Histogram" Margin="1,3"
ItemsSource="{Binding HistogramCollection}"
VerticalAlignment="Bottom">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl">
<Grid>
<Viewbox Stretch="Fill" MaxHeight="100" >
<ItemsPresenter />
</Viewbox>
</Grid>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Rectangle Fill="LimeGreen"
Stretch="Fill"
Height="{Binding Bin}"
MinWidth="1"
StrokeThickness="0"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
RenderOptions.EdgeMode="Aliased"
UseLayoutRounding="True"
MouseEnter="Rectangle_MouseEnter"
MouseLeave="Rectangle_MouseLeave"
/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
有什么想法吗?我的猜测是,WPF为了均匀地分配其余部分,正在丢弃一些视觉效果
我曾经尝试过使用多边形代替ItemsControl和矩形来分布我的箱子点,这种行为消失了,但是,我需要能够将鼠标移到直方图上并显示弹出窗口(除其他外,例如,在我的ViewModel中选择一系列箱子并更新属性)。如果你知道一种方法,使用多边形的方法,我可以在绿色区域中悬停,并确定我在一个特定的垃圾箱上,我肯定对此持开放态度
更新:
删除矩形XAML上的RenderOptions.EdgeMode=“Aliased”似乎可以解决黑线故障的问题。虽然它在设计器中呈现的效果有点苍白(使用d:DesignData),但在运行时似乎呈现得很好。在别人有机会插话之前,我将暂缓将其标记为“已回答”。我对多边形方法非常感兴趣,因为当调整到更大的宽度时,我得到了更清晰的直方图(直方图越宽,峰值的像素化程度就越高,也就是说,由于矩形的宽度,峰值是平的,它呈现为锯齿状图而不是平滑的曲线图)。如果点在处理程序上有鼠标:D