2016-12-17 68 views
0

单击它后,如何在C#中放大图像(完全在UWP中)? 我尝试了几件事:单击C#后的放大图像UWP

1)我试图添加按钮,与图像内容,我想放大,然后我添加事件点击。但我不知道应该在代码中添加什么。

2)我也尝试添加图像直接到我的XAML页面,我想创建Tapped事件,但我不知道我应该添加到该代码中。

我只想创建一个小照片库,所以点击图片后缩略图会打开更大的图片。

或者如果有可能添加PDF文件,你也可以写。这是我的问题的另一个解决方案。

回答

1

您可以通过设置它的RenderTransform属性放大图像的ScaleTransform:

private void Image_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    Image image = sender as Image; 
    image.RenderTransform = new ScaleTransform() { ScaleX = 2, ScaleY = 2 }; 
} 

<Image Source="ms-appx:///Assets/pic.png" Tapped="Image_Tapped" Stretch="None" /> 

scaleX和scaleY属性获取或设置缩放因子。请参阅MSDN文档以获取更多信息:https://msdn.microsoft.com/library/windows/apps/br242940?f=255&MSPPError=-2147217396

看起来不错,但有问题。当我添加更多图像时,比如进入GridView,它们重叠并突出显示。图像可以重叠,但是我点击的图像应该始终位于顶部...

您可以将点击的图像放入一个弹出窗口然后例如当它再次点击时将其添加回原始面板。我放在一起,应该给你的想法和东西的基础上的例子:

private void Image_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    Image image = sender as Image; 

    Panel parent = image.Parent as Panel; 
    if (parent != null) 
    { 
     image.RenderTransform = new ScaleTransform() { ScaleX = 2, ScaleY = 2 }; 
     parent.Children.Remove(image); 
     parent.Children.Add(new Popup() { Child = image, IsOpen = true, Tag = parent }); 
    } 
    else 
    { 
     Popup popup = image.Parent as Popup; 
     popup.Child = null; 
     Panel panel = popup.Tag as Panel; 
     image.RenderTransform = null; 
     panel.Children.Add(image); 
    } 
} 

<GridView SelectionMode="None" isItemClickEnabled="True"> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Image Source="ms-appx:///Assets/pic.png" Tapped="Image_Tapped" Stretch="None" /> 
      </Grid> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 
+0

看起来不错,但有一个问题。当我添加更多图像时,比如进入GridView,它们重叠并突出显示。像这样: [链接](http://imgur.com/dPG7YjY) 你也有解决这个问题的方法吗? – Sendys

+0

如果放大图片并且GridView中的放大图片和下一张图片之间没有足够的空间,您如何期望它们不会重叠? – mm8

+0

我的意思是它像图像,我点击将在上面..图像可以重叠,但图像,我点击应始终位于顶部... – Sendys