扩展ArcGIS API for SilverlightWPF 中的TextSymbol支持角度标注

扩展ArcGIS API for SilverlightWPF 中的TextSymbol支持角度标注,第1张

概述在ArcGIS API for Silverlight/WPF中原版的TextSymbol只能支持文字正向显示。在很多实际项目中,往往需要文字标注有一些角度甚至是沿线标注,下面我们来看一下原装的TextSymbol和扩展后的TextSymbol的比较和实现思路。 要实现右图的效果只需要从TextSymbol继承一个Symbol并增加Rotation属性,并加载相应的控件模板就行了。 以下是控件模板

在ArcGIS API for Silverlight/WPF中原版的TextSymbol只能支持文字正向显示。在很多实际项目中,往往需要文字标注有一些角度甚至是沿线标注,下面我们来看一下原装的TextSymbol和扩展后的TextSymbol的比较和实现思路。

要实现右图的效果只需要从TextSymbol继承一个Symbol并增加Rotation属性,并加载相应的控件模板就行了。

以下是控件模板的代码:

<ControlTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:esri="http://schemas.esri.com/arcgis/clIEnt/2009"xmlns:vsm="clr-namespace:System.windows;assembly=System.windows">    <TextBlock Text="{Binding Symbol.Text}"                FontFamily="{Binding Symbol.FontFamily}"                FontSize="{Binding Symbol.FontSize}"                Foreground="{Binding Symbol.Foreground}">        <TextBlock.Rendertransform>		    <Compositetransform Rotation="{Binding Symbol.TextRotation}"/>	    </TextBlock.Rendertransform>    </TextBlock></ControlTemplate>

控件模板中需要绑定对象中的文本、字体、字号、颜色、角度五个属性。

对象类的加载XAML代码如下:

base.ControlTemplate = XamlReader.Load(LoadXaml("LabelSymbol.xaml")) as ControlTemplate;public static string LoadXaml(string filename)         {            string xamlstring;            var assemblyname = new Assemblyname(Assembly.GetExecutingAssembly().Fullname);            string CurrentAssemblyname = assemblyname.name;            string resourcename = string.Format("{0};component{1}{2}",CurrentAssemblyname,"/",filename);            Uri uri = new Uri(resourcename,UriKind.relative);            StreamResourceInfo streamResourceInfo = Application.GetResourceStream(uri);            using (Stream resourceStream = streamResourceInfo.Stream)            {                using (StreamReader streamReader = new StreamReader(resourceStream))                {                    xamlstring = streamReader.ReadToEnd();                }            }            return xamlstring;        }

对象类中再定义对应的五个属性就能实现有倾斜角度的标注了。最终实现效果如图:

 

 

后话:

这个扩展的Symbol仅仅是对文字符号增加旋转角度,其中还有不完善的地方,在线路转角的地方标注的时候往往会与线交叉,如:

如果再深入完善一下,稍做修改可以将标注做成真正的沿线标注,如:

沿线文本在网上有大量的资料,在这里就不再啰嗦了,希望本文对各位ArcGIS API for Silverlight开发人员有帮助。

总结

以上是内存溢出为你收集整理的扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注全部内容,希望文章能够帮你解决扩展ArcGIS API for Silverlight/WPF 中的TextSymbol支持角度标注所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存