ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦d出窗口,并可以播放音频文件

ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦d出窗口,并可以播放音频文件,第1张

概述先看效果图,然后上代码: <UserControl x:Class="MapClient.PicMusic" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="htt

先看效果图,然后上代码:


<UserControl x:Class="MapClIEnt.PicMusic"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:d="http://schemas.microsoft.com/Expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    mc:Ignorable="d"    d:DesignHeight="250" d:DesignWIDth="300">    <GrID x:name="LayoutRoot" Background="White" HorizontalAlignment="left" WIDth="300" Height="250" VerticalAlignment="top">        <border margin="0" borderBrush="#FF95C8F7" borderThickness="1" CornerRadius="8">            <border.Background>                <linearGradIEntBrush EndPoint="0.5,1" StartPoint="0.5,0">                    <GradIEntStop color="White" Offset="0"/>                    <GradIEntStop color="#FFBBD7EF" Offset="0.194"/>                </linearGradIEntBrush>            </border.Background>            <border borderBrush="#FF95C8F7" borderThickness="1" margin="7,31,7,7" Background="White">                <GrID margin="-5,-26,-11,-8">                    <GrID.RowDeFinitions>                        <RowDeFinition Height="0.096*"/>                        <RowDeFinition Height="0.904*"/>                    </GrID.RowDeFinitions>                    <border margin="6,4,13,96" GrID.Row="1" borderThickness="0.5">                        <border margin="30,0">                            <border.Background>                                <ImageBrush Stretch="Fill" ImageSource="Images/bg.png"/>                            </border.Background>                            <Image x:name="gcimg" margin="8,5"/>                        </border>                    </border>                    <GrID Height="86" margin="0" GrID.Row="1" VerticalAlignment="Bottom">                        <ScrollVIEwer margin="6,-9,12,9" ScrollVIEwer.HorizontalScrollbarVisibility="HIDden" ScrollVIEwer.VerticalScrollbarVisibility="auto" borderThickness="0.5">                            <TextBlock x:name="tbSKShortMes" textwrapPing="Wrap" Text="这里是水库的详细信息介绍内容" FontSize="14.667" FontFamily="Microsoft YaHei" Height="76" WIDth="276" HorizontalAlignment="Center" VerticalAlignment="Center" />                        </ScrollVIEwer>                    </GrID>                    <StackPanel HorizontalAlignment="Right" WIDth="91" OrIEntation="Horizontal" margin="0,-4,4">                        <Image x:name="imgStart"  HorizontalAlignment="left" Height="25" margin="3,5,-5" WIDth="22" Source="Images/button_grey_play.png" MouseleftbuttonDown="imgStart_MouseleftbuttonDown" MouseleftbuttonUp="imgStart_MouseleftbuttonUp" tooltipService.tooltip="播放" Cursor="Hand"/>                        <Image x:name="imgPause" HorizontalAlignment="left" Height="25" margin="5,-5" WIDth="22" Source="Images/button_grey_pause.png" MouseleftbuttonDown="imgPause_MouseleftbuttonDown" MouseleftbuttonUp="imgPause_MouseleftbuttonUp" tooltipService.tooltip="暂停" Cursor="Hand"/>                        <Image x:name="imgEnd" HorizontalAlignment="left" Height="25" margin="5,-5" WIDth="22" Source="Images/button_grey_stop.png" MouseleftbuttonDown="imgEnd_MouseleftbuttonDown" MouseleftbuttonUp="imgEnd_MouseleftbuttonUp" tooltipService.tooltip="停止" Cursor="Hand"/>                    </StackPanel>                    <TextBlock x:name="gcNM" margin="105,129,3" textwrapPing="Wrap" Text="东风水库" FontWeight="Bold" Cursor="Hand" FontSize="14.667" FontFamily="Microsoft YaHei" Foreground="#FF0056FF" d:LayoutOverrIDes="WIDth,Height"/>                    <MediaElement x:name="media" HorizontalAlignment="Right" margin="0,104,3" WIDth="21"/>                </GrID>            </border>                </border>    </GrID></UserControl>using System;using System.Collections.Generic;using System.linq;using System.Net;using System.windows;using System.windows.Controls;using System.windows.documents;using System.windows.input;using System.windows.Media;using System.windows.Media.Animation;using System.windows.Shapes;using System.Text;using System.windows.Controls.Primitives;using System.windows.Media.Imaging;using MapClIEnt.ServiceReference1;using System.Collections.ObjectModel;namespace MapClIEnt{    public partial class PicMusic : UserControl    {        SK sk; //水库        HL hl; //河流        PGZ pgz; //排灌站        DF df; //堤防        SZ sz; //水闸        PWK pwk; //排污口        GSZ gsz; //供水站        string l_name;        string l_ID;        string l_type;        public PicMusic()        {            InitializeComponent();        }        #region 通用方法,只需要更改Show,在实例化窗体的时候,传入不同的参数即可        private Point _location;        private bool _isShowing;        private Popup _popup;        private GrID _grID;        private Canvas _canvas;        private FrameworkElement _content;        //初始化并显示d出窗体.公共方法在显示菜单项时调用        public voID Show(Point location,string name,string ID,string type)        {            this.l_name = name;            this.l_ID = ID;            this.l_type = type;            /***************2013-05-22**************************/            this.gcNM.Text = name; //显示工程名称            if (_isShowing)                throw new InvalIDOperationException();            _isShowing = true;            _location = location;            ConstructPopup(this);            _popup.IsOpen = true;            //处理标题的间距问题            string tmp = name;            StringBuilder sb = new StringBuilder();            for (int i = 0; i < tmp.Length; i++)            {                sb.Append(tmp[i] + " ");            }            getDataSoapClIEnt clIEnt = new getDataSoapClIEnt();            clIEnt.getGcmediaByIDCompleted += new EventHandler<getGcmediaByIDCompletedEventArgs>(clIEnt_getGcmediaByIDCompleted);            clIEnt.getGcmediaByIDAsync(ID,type);        }        voID clIEnt_getGcmediaByIDCompleted(object sender,getGcmediaByIDCompletedEventArgs e)        {            try            {                ObservableCollection<tb_GcmeDIA> Lists = e.Result;                if (Lists.Count > 0)                {                    foreach (tb_GcmeDIA item in Lists)                    {                        //工程名称                        this.gcNM.Text = item.GCNM.Trim();                        string[] s = { "ClIEntBin" };                        //音频MP3文件                        string urlM = App.Current.Host.source.OriginalString.ToString().Split(s,StringSplitoptions.RemoveEmptyEntrIEs)[0] + item.MP3URL.ToString().Trim(new char[] { '.','/' });                        this.media.source = new Uri(urlM,UriKind.relativeOrabsolute);                        //图片文件                        string urlA = App.Current.Host.source.OriginalString.ToString().Split(s,StringSplitoptions.RemoveEmptyEntrIEs)[0] + item.PICURL.ToString().Trim(new char[] { '.','/' });                        Uri uri = new Uri(urlA,UriKind.relativeOrabsolute);                        BitmAPImage image = new BitmAPImage(uri);                        this.gcimg.source = image;                        //工程简要说明                        this.tbSKShortMes.Text = item.MEMO;                    }                }                else                {                    this.media.source = new Uri("sound.mp3",UriKind.relative); //音频资料                    Uri uri = new Uri("Images/nopic.jpg",UriKind.relative);                    BitmAPImage image = new BitmAPImage(uri);                    this.gcimg.source = image; //工程图片                    this.tbSKShortMes.Text = "暂无资料,请上传!"; //工程简要说明                }            }            catch (Exception)            {                this.media.source = new Uri("sound.mp3",UriKind.relative); //音频资料                Uri uri = new Uri("Images/nopic.jpg",UriKind.relative);                BitmAPImage image = new BitmAPImage(uri);                this.gcimg.source = image; //工程图片                this.tbSKShortMes.Text = "暂无资料,请上传!"; //工程简要说明            }        }        public voID Show(Point location)        {            if (_isShowing)                throw new InvalIDOperationException();            _isShowing = true;            _location = location;            ConstructPopup(this);            _popup.IsOpen = true;        }        //关闭d出窗体        public voID Close()        {            _isShowing = false;            if (_popup != null)            {                _popup.IsOpen = false;            }        }        //d出框外面点击则关闭该窗口        protected virtual voID OnClickOutsIDe()        {            Close();        }        // 用GrID来布局,初始化d出窗体        //在GrID里面添加一个Canvas,用来监测菜单项外面的鼠标点击事件        private voID ConstructPopup(FrameworkElement _element)        {            if (_popup != null)                return;            _popup = new Popup();            _grID = new GrID();            _popup.Child = _grID;            _canvas = new Canvas();            _canvas.MouseleftbuttonDown += (sender,args) => { OnClickOutsIDe(); };            _canvas.MouseRightbuttonDown += (sender,args) => { args.Handled = true; OnClickOutsIDe(); };            _canvas.Background = new SolIDcolorBrush(colors.transparent);            _grID.Children.Add(_canvas);            _content = _element;            _content.HorizontalAlignment = HorizontalAlignment.left;            _content.VerticalAlignment = VerticalAlignment.top;            _content.margin = new Thickness(_location.X,_location.Y,0);            _grID.Children.Add(_content);            UpdateSize();        }        /// <summary>        /// 更新大小        /// </summary>        private voID UpdateSize()        {            _grID.WIDth = Application.Current.Host.Content.ActualWIDth;            _grID.Height = Application.Current.Host.Content.ActualHeight;            if (_canvas != null)            {                _canvas.WIDth = _grID.WIDth;                _canvas.Height = _grID.Height;            }        }        #endregion        #region WebService 调用方法及关闭窗体方法        public voID closeWindow(SK mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(HL mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(DF mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(PGZ mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(GSZ mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(PWK mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        public voID closeWindow(SZ mp)        {            mp.LayoutRoot.Children.RemoveAt(mp.LayoutRoot.Children.Count - 1);        }        private voID imgStart_MouseleftbuttonDown(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            e.Handled = true;            Uri uri = new Uri("Images/button_blue_play.png",UriKind.relative);            BitmAPImage image = new BitmAPImage(uri);            this.imgStart.source = image;            //其他变成灰色图案            uri = new Uri("Images/button_grey_pause.png",UriKind.relative);            BitmAPImage image2 = new BitmAPImage(uri);            this.imgPause.source = image2;            uri = new Uri("Images/button_grey_stop.png",UriKind.relative);            BitmAPImage image3 = new BitmAPImage(uri);            this.imgEnd.source = image3;        }        private voID imgStart_MouseleftbuttonUp(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            this.media.Play();        }        private voID imgPause_MouseleftbuttonDown(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            e.Handled = true;            Uri uri = new Uri("Images/button_blue_pause.png",UriKind.relative);            BitmAPImage image = new BitmAPImage(uri);            this.imgPause.source = image;            //其他变成灰色图案            uri = new Uri("Images/button_grey_play.png",UriKind.relative);            BitmAPImage image2 = new BitmAPImage(uri);            this.imgStart.source = image2;            uri = new Uri("Images/button_grey_stop.png",UriKind.relative);            BitmAPImage image3 = new BitmAPImage(uri);            this.imgEnd.source = image3;        }        private voID imgPause_MouseleftbuttonUp(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            this.media.Pause();        }        private voID imgEnd_MouseleftbuttonDown(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            e.Handled = true;            Uri uri = new Uri("Images/button_blue_stop.png",UriKind.relative);            BitmAPImage image = new BitmAPImage(uri);            this.imgEnd.source = image;            //其他变成灰色图案            uri = new Uri("Images/button_grey_pause.png",UriKind.relative);            BitmAPImage image2 = new BitmAPImage(uri);            this.imgPause.source = image2;            uri = new Uri("Images/button_grey_play.png",UriKind.relative);            BitmAPImage image3 = new BitmAPImage(uri);            this.imgStart.source = image3;        }        private voID imgEnd_MouseleftbuttonUp(object sender,System.windows.input.MousebuttonEventArgs e)        {            // 在此处添加事件处理程序实现。            this.media.Stop();        }        #endregion    }}/// <summary>        /// 排灌站列表聚焦        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private voID dgPGZList_SelectionChanged(object sender,SelectionChangedEventArgs e)        {            ESRI.ArcGIS.ClIEnt.Projection.WebMercator mercator = new ESRI.ArcGIS.ClIEnt.Projection.WebMercator();            // 高亮和选中行相关的地图元素            DataGrID dataGrID = sender as DataGrID;            int selectedindex = dataGrID.Selectedindex;            if (selectedindex > -1)            {                tb_PGZ findResult = (tb_PGZ)dgPGZList.SelectedItem; //获取DataGrID的选中行,该DataGrID是数据的DataGrID的name属性值                Graphic g = new Graphic()                {                    Geometry = mercator.FromGeographic(new MapPoint(double.Parse(findResult.Latitute.ToString().Trim()),double.Parse(findResult.Longitute.ToString().Trim()))),Symbol = LayoutRoot.Resources["DefaultMarkerSymbol"] as Symbol                };                //保存属性                g.Attributes["Latitute"] = findResult.Latitute; //纬度                g.Attributes["Longitute"] = findResult.Longitute; //经度                g.Attributes["NM"] = findResult.BZNM; //名称                g.Attributes["ID"] = findResult.ID;//序号                ESRI.ArcGIS.ClIEnt.Geometry.Envelope selectedFeatureExtent = mercator.ToGeographic(g.Geometry).Extent; //选中点的位置                double expandPercentage = 1;                //加数值后,聚焦(这里需要注意,进行地理坐标和墨卡托坐标的转换)                double wIDthExpand = (selectedFeatureExtent.WIDth + 5) * (expandPercentage / 100);                double heightExpand = (selectedFeatureExtent.Height + 5) * (expandPercentage / 100);                ESRI.ArcGIS.ClIEnt.Geometry.Envelope displayExtent = new Envelope(WKIDConvert.lonlat2mercator(new MapPoint(selectedFeatureExtent.XMin - (wIDthExpand / 2),selectedFeatureExtent.YMin - (heightExpand / 2))),WKIDConvert.lonlat2mercator(new MapPoint(selectedFeatureExtent.XMax + (wIDthExpand / 2),selectedFeatureExtent.YMax + (heightExpand / 2))))                {                    SpatialReference = new SpatialReference(102100)                };                try                {                    //聚焦                    myMap.ZoomTo(displayExtent);                    ShowFocus(g);                }                catch (Exception)                {                }                //聚焦之后,将DataGrID中被选中记录的选中状态置空                dataGrID.Selectedindex = -1;                //聚焦是加载到SL中间显示并自动添加Tip信息                Generaltransform gt = this.transformToVisual(Application.Current.RootVisual as UIElement);                double x = browser.ClIEntWIDth;                double y = browser.ClIEntHeight;                Point offset = gt.transform(new Point(x / 2,y / 2));                double controltop = offset.Y - 125;                double controlleft = offset.X - 300;                Point p = new Point(controlleft,controltop);                tip_Base.g_PicMusic = new PicMusic();                tip_Base.g_PicMusic.Show(p,g.Attributes["NM"].ToString(),g.Attributes["ID"].ToString(),"4");            }            else            {                //不进行任何处理            }        }
总结

以上是内存溢出为你收集整理的ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦d出窗口,并可以播放音频文件全部内容,希望文章能够帮你解决ArcGIS API for Silverlight 当DataGrid选中项时,地图聚焦d出窗口,并可以播放音频文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1019199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存