在WPF中放大图像

时间:2014-06-29 08:30:30

标签: c# wpf image xaml image-enlarge

我有一个WPF应用程序,用于检查某个父目录中的新图像,如果有新图像,则会切换当前显示的图像(我有6张图像)。

我想添加一个功能,允许用户点击其中一个图像,然后点击,将出现一个“新”窗口,显示图像放大,屏幕上任何位置的另一次点击将退出这个放大并将焦点放回到其他(6)图像。

这可能吗?我尝试使用Google搜索zoom image wpf,但只找到mouse-drag个相关解决方案。

我也尝试过使用viewport,但这也不能很好地发挥作用。

更新 - XAML

<Grid Grid.Row="0">
        <GroupBox  x:Name="AccuracyGraphsGroupBox" Header="Accuracy" Foreground="Red">
            <Grid >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.5*" />
                    <ColumnDefinition Width="0.5*" />
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Width="Auto" Height="Auto" Stretch="Fill" x:Name="AccuracyPicBox" MouseUp="AccuracyPicBox_OnMouseUp"></Image>
                <Image Grid.Column="1" Width="Auto" Height="Auto" Stretch="Fill" x:Name="AccuracyPerioPicBox" MouseUp="AccuracyPerioPicBox_OnMouseUp"></Image>
            </Grid>
        </GroupBox>
    </Grid>

1 个答案:

答案 0 :(得分:7)

正如评论中提到的那些人,最好的办法是使用ToolTip弹出全尺寸图像。数据绑定Image.SourceImage的{​​{1}}值存在轻微问题,因为它们不属于普通的UI可视树,而是存在于自己的树中。但是,我们可以使用ToolTip.PlacementTarget property

来解决这个问题
ToolTip

当然,你可以在两个<Image Name="Image" Source="/WpfApplication1;component/Images/Tulips.jpg" Height="100" Stretch="Uniform"> <Image.ToolTip> <ToolTip DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}"> <Border BorderBrush="Black" BorderThickness="1" Margin="5,7,5,5"> <Image Source="{Binding Source}" Stretch="None" /> </Border> </ToolTip> </Image.ToolTip> </Image> 属性中使用相同的Binding Path,但我从不喜欢重复代码。