【问题标题】:Check if polygon has been clicked检查多边形是否被点击
【发布时间】:2014-04-16 22:38:52
【问题描述】:

您好,我已使用以下方法将多边形添加到地图中:

//Creating a Polygon
Polygon MyPolygon = new Polygon(); 
MyPolygon.Points.Add(new Point(0, 0));
MyPolygon.Points.Add(new Point(95, 0));
MyPolygon.Points.Add(new Point(95, 35));
MyPolygon.Points.Add(new Point(10, 35));
MyPolygon.Points.Add(new Point(0, 75)); // 

MyPolygon.Stroke = new SolidColorBrush(Colors.Black);
MyPolygon.Fill = new SolidColorBrush(Colors.Black);

//Creating a MapOverlay and adding the Grid to it.
MapOverlay MyOverlay = new MapOverlay();
MyOverlay.Content = MyPolygon;
MyOverlay.GeoCoordinate = 
new GeoCoordinate(coordinate.Latitude,     coordinate.Longitude);
MyOverlay.PositionOrigin = new Point(0, 1.0);

//Creating a MapLayer and adding the MapOverlay to it            
mapLayer.Add(MyOverlay);

MyPolygon.MouseLeftButtonUp += new MouseButtonEventHandler(MyPolygon_Click);

...

private void MyPolygon_Click(object sender, MouseEventArgs e)
{
    TextBlock nametext;
    nametext = new TextBlock { Text = "1234" };          
}

我需要检查用户是否点击了这个多边形。谁能帮我解决这个问题?

【问题讨论】:

  • 您是否尝试将 MouseUp 事件处理程序添加到您的多边形?
  • 是的。我已经编辑了我的问题以显示这一点,但是单击多边形时没有任何反应。
  • 你使用的是什么框架? WPF、Windows 应用商店或?
  • 您的点击事件只会创建一个文本块,它不会显示它。所以可能触发了偶数,但没有显示任何内容。
  • 如何在屏幕上显示文本块?

标签: c# map windows-store-apps polygon


【解决方案1】:

假设一个商店应用程序,下面的代码是一个快速而肮脏的示例,它将做出反应并在您单击或触摸屏幕的位置添加一个 TextBlock。

XAML

<Page
    x:Class="StoreApp_PolyTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:StoreApp_PolyTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Canvas 
        Name="canvas"
        Background="{StaticResource ApplicationPageBackgroundThemeBrush}"
        Loaded="Canvas_Loaded">

    </Canvas>
</Page>

后面的代码

using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Shapes;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238

namespace StoreApp_PolyTest
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

        }

        private void Canvas_Loaded(object sender, RoutedEventArgs e)
        {
            Polygon MyPolygon = new Polygon();
            MyPolygon.Points.Add(new Point(0, 0));
            MyPolygon.Points.Add(new Point(95, 0));
            MyPolygon.Points.Add(new Point(95, 35));
            MyPolygon.Points.Add(new Point(10, 35));
            MyPolygon.Points.Add(new Point(0, 75)); // 

            MyPolygon.Stroke = new SolidColorBrush(Colors.Blue);
            MyPolygon.Fill = new SolidColorBrush(Colors.Blue);

            canvas.Children.Add(MyPolygon);

            MyPolygon.PointerPressed += MyPolygon_PointerPressed;
        }

        void MyPolygon_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            TextBlock nameText = new TextBlock() {Text="1234"};
            var point = e.GetCurrentPoint(this);
            Canvas.SetLeft(nameText, point.Position.X);
            Canvas.SetTop(nameText, point.Position.Y);
            canvas.Children.Add(nameText);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2020-06-19
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多