类似Google Maps中矢量地图的绘制,路名、公园名等是在类似画布Canvas的容器上绘制文字,文字绘制分为两种,一种为矢量,一种为像素矩阵;在Silverlight中可以理解为矢量字体,在XNA中可理解为象素矩阵字体(矢量字体转换为像素矩阵),在此讨论Silverlight中的字体绘制。
1.使用TextBlock,在此不做讨论;主要讨论使用Glyphs适用于类似矢量地图绘制路名、公园名等的场景;
2.使用Glyphs,大致使用过程如下
Glyphs glyphs = new Glyphs();
glyphs.Fill = new SolidColorBrush(color); //文字绘制使用的笔刷、颜色
glyphs.FontSource = fontSouce; // 文字字体
glyphs.FontRenderingEmSize = fontSize; //字体大小
glyphs.UnicodeString = "公园名"; //绘制的文字
glyphs.OriginX = 100; //绘制文字在画布上的位置
glyphs.OriginY = 100;
canvas.Children.Add(glyphs); //作为控件加入画布
上述Glyphs的使用中发现两个问题,请大家讨论指教:
1.大量Glyphs作为控件加入canvas,导致布局、控件大小计算频繁,效率较低,用户响应慢;
2.文字的美观--描边,我没有找到方法。
读者有解决类似问题的经验、方法、疑问,欢迎在此讨论...