WPF中的放大镜
如何在WPF中创建非圆形放大镜?这必须适用于控件,而不仅仅是图像。我在网上找到的每一个例子要么是圆形的,要么是仅适用于图像的 例如,我有一个滑块,我想将拇指变成一个矩形放大区域,以显示放大的记号(因为我的记号显示在滑块轨迹本身中,而不是在它下面)。我已经创建了所有必要的样式,只是缺少了放大拇指下方内容的功能(因为拇指位于控件/显示器的顶部)WPF中的放大镜,wpf,xaml,zooming,magnify,Wpf,Xaml,Zooming,Magnify,如何在WPF中创建非圆形放大镜?这必须适用于控件,而不仅仅是图像。我在网上找到的每一个例子要么是圆形的,要么是仅适用于图像的 例如,我有一个滑块,我想将拇指变成一个矩形放大区域,以显示放大的记号(因为我的记号显示在滑块轨迹本身中,而不是在它下面)。我已经创建了所有必要的样式,只是缺少了放大拇指下方内容的功能(因为拇指位于控件/显示器的顶部) 谢谢制作自己的“放大”控件非常简单。您可以使用一个VisualBrush,并将一个Visual属性从源代码(您要放大)中提取,绘制到一个普通的矩形上。以
谢谢制作自己的“放大”控件非常简单。您可以使用一个
VisualBrush
,并将一个Visual
属性从源代码(您要放大)中提取,绘制到一个普通的矩形上。以Ian G on Tap网站上的页面为例
更好的是,这里有一个非常简单的VisualBrush
示例,它在网格的右列中绘制一个矩形
,从网格的左列放大一个图像
。您可以根据自己的喜好进行调整:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Name="Image" Source="Images/BlackLogo.ico" Width="150" Height="150" />
<Rectangle Grid.Column="1">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ., ElementName=Image}"
Viewport="50,100,300,300" ViewportUnits="Absolute" />
</Rectangle.Fill>
</Rectangle>
</Grid>
就做一个吧。您可以使用一个VisualBrush
和一个Visual
属性,该属性取自绘制在普通矩形
上的源文件(要放大)。为什么您不能按照找到的教程进行操作,而只使用矩形
而不是椭圆
?以Ian G on Tap上的页面为例。@Sheridan说得很好,我迷失在示例的海洋中,看不到合适的示例。我是实现这一点的一部分,并且已经谈到了可视化属性分配,我可以通过类似这样的方式在xaml中实现这一点吗(它不工作的atm)
我不认为使用VisualBrush
的祖先控件是一个好主意。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Name="Image" Source="Images/BlackLogo.ico" Width="150" Height="150" />
<Rectangle Grid.Column="1">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ., ElementName=Image}"
Viewport="50,100,300,300" ViewportUnits="Absolute" />
</Rectangle.Fill>
</Rectangle>
</Grid>