Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF中的放大镜_Wpf_Xaml_Zooming_Magnify - Fatal编程技术网

WPF中的放大镜

WPF中的放大镜,wpf,xaml,zooming,magnify,Wpf,Xaml,Zooming,Magnify,如何在WPF中创建非圆形放大镜?这必须适用于控件,而不仅仅是图像。我在网上找到的每一个例子要么是圆形的,要么是仅适用于图像的 例如,我有一个滑块,我想将拇指变成一个矩形放大区域,以显示放大的记号(因为我的记号显示在滑块轨迹本身中,而不是在它下面)。我已经创建了所有必要的样式,只是缺少了放大拇指下方内容的功能(因为拇指位于控件/显示器的顶部) 谢谢制作自己的“放大”控件非常简单。您可以使用一个VisualBrush,并将一个Visual属性从源代码(您要放大)中提取,绘制到一个普通的矩形上。以

如何在WPF中创建非圆形放大镜?这必须适用于控件,而不仅仅是图像。我在网上找到的每一个例子要么是圆形的,要么是仅适用于图像的

例如,我有一个滑块,我想将拇指变成一个矩形放大区域,以显示放大的记号(因为我的记号显示在滑块轨迹本身中,而不是在它下面)。我已经创建了所有必要的样式,只是缺少了放大拇指下方内容的功能(因为拇指位于控件/显示器的顶部)



谢谢

制作自己的“放大”控件非常简单。您可以使用一个
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>