本文主要实现了两个功能,视频文件(MP4格式)的读取和第三方库GMap.net的使用。
视频文件读取
在之前预留的播放视频的位置添加MediaElement模块,并添加单个视频播放完之后的处理时间,示例代码如下:
<DockPanel Grid.Row="1" Grid.Column="1" Background="Beige">
<Label DockPanel.Dock="Top" FontSize="9" >视频区</Label>
<MediaElement x:Name="me1" MediaEnded ="media_MediaEnded"></MediaElement>
</DockPanel>
读取视频文件的方式和前面读取相关数据的方式一样。具体播放视频的方法如下:
//MeidaPath为视频文件的地址
me1.Source = new Uri(MeidaPath);
//全屏播放
me1.Stretch = Stretch.Fill;
me1.LoadedBehavior = MediaState.Manual;
me1.Play();
//音量设置为0
me1.Volume = 0;
要实现循环播放的功能,在添加MediaElement模块时添加了media_MediaEnded事件,具体代码与注释如下:
private void media_MediaEnded(object sender, RoutedEventArgs e)
{
MediaElement me = (sender as MediaElement);
me.Position =TimeSpan.Zero;
me.Play();
}
第三方库GMap.net
引入第三方库的方法和前文一致。
首先设置地图的缓存位置,与数据放在同一个文件夹。
string BasePath = System.AppDomain.CurrentDomain.BaseDirectory;
//设置地图缓存位置
string cachepath = BasePath + "MapData";
之后将地图赋给添加的地图模块,并设置缩放级别,地图的起始点等等。
<DockPanel Grid.Row="3" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2" Background="AliceBlue">
<Label DockPanel.Dock="Top">功能区a</Label>
<windowspresentation:GMapControl x:Name="gmap"></windowspresentation:GMapControl>
</DockPanel>
//将设置的地址赋值给gmap
gmap.CacheLocation = cachepath;
//使用微软的卫星地图
gmap.MapProvider = GMapProviders.BingSatelliteMap;
//指定缩放级别
gmap.MinZoom = 2;
gmap.MaxZoom = 16;
//设置当前的缩放级别
gmap.Zoom = 4;
//设置是否显示中心的十字
gmap.ShowCenter = true;
//设置拖拽的键盘
gmap.DragButton = MouseButton.Right;
//设置起始的坐标点
gmap.Position = new PointLatLng(34.8, 104.7);
接着读取数据,数据包括五列(名字、城市、经度、维度、常量),同样我们需要声明这样的数据类型,此处与之前略微不同,有疑问可私信,读取数据的方法与之前一致,此处不再赘述。之后将这些点标注在地图之上,实例代码如下:
//将数据标注到地图上
gmap.Markers.Clear();
for (int i = 0; i < dp.names.Count; i++)
{
PointLatLng pll = new PointLatLng(dp.names[i].Lat, dp.names[i].Lon);
GMapMarker gmm = new GMapMarker(pll);
Ellipse e = new Ellipse();
e.Width = 10;
e.Height = 10;
//填充颜色
/e.Fill = Brushes.Red;
//放射性填充
e.Fill = new RadialGradientBrush(Colors.Yellow,Colors.Green);
//鼠标悬停的提示
e.ToolTip = dp.names[i].Name + ":\r\n" + dp.names[i].Production + "万吨";
e.Cursor = Cursors.Hand;
gmm.Shape = e;
gmap.Markers.Add(gmm);
}
同样我们可以添加双击放大事件,整体效果图下图所示:
其中,点击原点显示相应的信息,鼠标形状改变等等细节均为在本文中说明与解释,大家可私信获得源码与答疑,如果对大家有帮助可以点赞,收藏,关注三连~~~