【问题标题】:Is there any way of doing an image map on XAML?有没有办法在 XAML 上做图像映射?
【发布时间】:2013-01-18 17:09:59
【问题描述】:

我想使用 C# 和 XAML 创建一个 Windows 8 应用程序。

我想让一个图像的不同部分都可以点击,就像你在 HTML 中使用 imagemap 元素一样。

可能有一种方法可以对单个图像执行此操作,但很难正确定位它们。

那么是否可以在 XAML 中使图像可点击?

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    xaml 中的简单概念示例...

    添加命名空间;)

     xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
     xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
    
    
    <Grid Height="300" Width="300">
           <Grid.Background>
             <Image/> <!-- Add your image source here, 
                           you dont want to know the picture I was going to put :) -->
           </Grid.Background>
    
           <Rectangle Height="20" Width="20" Stroke="Red" StrokeThickness="2" Margin="60,120">
             <i:Interaction.Triggers>
               <!-- Couldn't recall if its "Click" event or "MouseLeftButtonDown" -->
                 <i:EventTrigger EventName="MouseLeftButtonDown">
                    <ei:ChangePropertyAction TargetName="Blah"
                                             PropertyName="Visibility"
                                             Value="Visible" />
                 </i:EventTrigger>
             </i:Interaction.Triggers>
           </Rectangle>
    
           <TextBlock Text="Whoa Dude, Where's my click?" x:Name="Blah" FontSize="50" Visibility="Collapsed"/>
    
        </Grid>
    

    【讨论】:

    • 如果我理解正确的话,是您使用网格分割图像,并且根据网格的哪个部分按下您可以使用不同的方法?
    • 不,您可以使用任何您喜欢的网格、画布。然后你只是在你希望在图片上接收鼠标事件的地方放置一些东西。使用网格单元会限制您制作这些区域的精确度。就好像您使用这种技术一样,您可以将事件附加到形状、路径以及任何您想要的东西上。例如,假设您想要一个单击地图,围绕状态的形状绘制路径,将鼠标事件附加到它,然后将其放置在地图图像上的状态上,瞧……
    • 对于阅读此文的任何具有复杂形状的人,请使用表达式工作室创建路径并将其导出到 xaml。这将节省大量时间。
    【解决方案2】:

    您当然可以添加事件来跟踪 MouseDown 和 MouseUp 事件并将它们转换为您自己的 Click 事件...但这在 WPF 中听起来不正确,显然有例外。如果您正在制作一个安全系统,该系统依赖于具有用户定义模式的可自定义图像来单击图像 - 当然可以。但是,如果您在 Photoshop 中绘制用户界面并想要完成这项工作 - 您做错了:您失去了样式、矢量渲染、特定于控件的事件 - 本质上是 WPF 的整个理念。

    底线:除非您指定的任务证明使用图像是合理的,否则答案只能是:不要这样做。

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多