silverlight3 学习 3,绘图--鼠标轨迹画线
新建一个Silverlight Navigation Application
修改Home.xaml
<navigation:Page x:Class="SilverlightApplication2.Home"
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"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"
Title="Home"
Style="{StaticResource PageStyle}">
<Grid x:Name="LayoutRoot" Background="AliceBlue" >
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ScrollViewer x:Name="PageScrollViewer" Style="{StaticResource PageScrollViewerStyle}" Grid.Row="0">
<StackPanel x:Name="ContentStackPanel" Orientation="Horizontal" Height="20">
<TextBox x:Name="txtPoint" Width="100"></TextBox>
</StackPanel>
</ScrollViewer>
<InkPresenter x:Name="inkP" Grid.Row="1" Background="Black" MouseLeftButtonDown="inkP_MouseLeftButtonDown" MouseMove="inkP_MouseMove" LostMouseCapture="inkP_LostMouseCapture"></InkPresenter>
</Grid>
</navigation:Page>
修改Home.xaml.cs
public partial class Home : Page { private Stroke MyStroke; public Home() { InitializeComponent(); } // Executes when the user navigates to this page. protected override void OnNavigatedTo(NavigationEventArgs e) { } private void inkP_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { inkP.CaptureMouse(); StylusPointCollection MySpc = new StylusPointCollection(); MySpc.Add(e.StylusDevice.GetStylusPoints(inkP)); MyStroke = new Stroke(MySpc); MyStroke.DrawingAttributes = new DrawingAttributes(); MyStroke.DrawingAttributes.Color = Colors.White; inkP.Strokes.Add(MyStroke); } private void inkP_MouseMove(object sender, MouseEventArgs e) { if (MyStroke != null) { MyStroke.StylusPoints.Add(e.StylusDevice.GetStylusPoints(inkP)); txtPoint.Text = "" + e.StylusDevice.GetStylusPoints(inkP)[0].X+","+ e.StylusDevice.GetStylusPoints(inkP)[0].Y; } } private void inkP_LostMouseCapture(object sender, MouseEventArgs e) { MyStroke = null; } }
InkPresenter 继承自 Canvas