silverlight里画图形很方面。
1,GraphicsLayer图层相当于一个画布。
2,要有2个元素:Geometry和Symbol。
下面是画线的例子:
Xaml代码:
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<esri:SimpleLineSymbol x:Key="DrawLineSymbol" Color="Green" Width="4"/>
<esri:SimpleFillSymbol x:Key="DrawFillSymbol" Fill="#3300ff00" BorderBrush="Green" BorderThickness="2"/>
<esri:SimpleLineSymbol x:Key="DefaultLineSymbol" Color="Red" Width="4"/>
<esri:SimpleFillSymbol x:Key="DefaultFillSymbol" Fill="#33ff0000" BorderBrush="Red" BorderThickness="2"/>
</Grid.Resources>
<esri:Map x:Name="MyMapDefault">
<esri:ArcGISTiledMapServiceLayer ID="ShadeRelief" Opacity="0.75"
Url=">
<esri:GraphicsLayer x:Name="graphicsLayer" ID="MyGraphicsLayer"></esri:GraphicsLayer>
</esri:Map>
</Grid>
Cs代码:
Draw MyDrawObject = new Draw();
private Symbol _activeSymbol = null;
public MainPage()
{
InitializeComponent();
MyDrawObject = new Draw(MyMapDefault)
{
LineSymbol=LayoutRoot.Resources["DrawLineSymbol"] as LineSymbol,
FillSymbol=LayoutRoot.Resources["DrawFillSymbol"] as FillSymbol
};
MyDrawObject.DrawComplete+=new EventHandler<DrawEventArgs>(MyDrawObject_DrawComplete);
MyDrawObject.DrawMode = DrawMode.Polyline;
_activeSymbol = LayoutRoot.Resources["DefaultLineSymbol"] as Symbol;
MyDrawObject.IsEnabled = true;
}
private void MyDrawObject_DrawComplete(object sender, DrawEventArgs args)
{
GraphicsLayer graphicsLayer = MyMapDefault.Layers["MyGraphicsLayer"] as GraphicsLayer;
Graphic graphic = new Graphic()
{
Geometry = args.Geometry,
Symbol = _activeSymbol,
};
graphicsLayer.Graphics.Add(graphic);
}