如何在 windows phone 8 应用程序中以编程方式从一个 canvas 获取手势以在另一个 canvas 上设置
How to get guesture from one canvas to set on another canvas programatically in windows phone 8 app
我正在创建简单的 canvas 应用程序,它是从名为 canvas 的 canvas 中获取签名的,"ContentPanelCanvas" 来自名为 "pop-up" 的网格,并且要从 "Pop-up" 设置签名并在 canvas 上设置名为 "maincanvas"。
如果你知道请帮助我解决这个问题如何获取 canvas 上下文并将其设置为空白 canvas.Here 是我使用的代码。
在Xaml中:
<Grid x:Name="ContentPanel">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Canvas Name="maincanvas">
</Canvas>
</Grid>
<Grid Name="Popup" Visibility="Collapsed" Grid.Row="0" Width="480" Height="300" Background="Black">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Canvas Name="ContentPanelCanvas" Background="Beige">
</Canvas>
</Grid>
<Grid Grid.Row="1" HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" x:Name="btnOK" Content="OK" Tap="btnOK_Tap"/>
<Button Grid.Column="1" x:Name="btnCancel" Content="Clear" Tap="btnCancel_Tap"/>
</Grid>
</Grid>
</Grid>
这是 .CS 文件:
private Point currentPoint;
private Point oldPoint;
Line line;
public SingleImage()
{
InitializeComponent();
this.ContentPanelCanvas.MouseMove += new MouseEventHandler(ContentPanelCanvas_MouseMove);
this.ContentPanelCanvas.MouseLeftButtonDown += new MouseButtonEventHandler(ContentPanelCanvas_MouseLeftButtonDown);
}
void ContentPanelCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
currentPoint = e.GetPosition(ContentPanelCanvas);
oldPoint = currentPoint;
}
void ContentPanelCanvas_MouseMove(object sender, MouseEventArgs e)
{
currentPoint = e.GetPosition(this.ContentPanelCanvas);
line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y };
line.Stroke = new SolidColorBrush(Colors.Purple);
line.StrokeThickness = 3;
this.ContentPanelCanvas.Children.Add(line);
oldPoint = currentPoint;
}
private void Button_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Visible;
ContentPanelCanvas.Children.Clear();
}
private void btnOK_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Collapsed;
// Here i want to set signature to main canvas how to pass signature
from one canvas to another?//
}
private void btnCancel_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ContentPanelCanvas.Children.Clear();
}
private void btnOK_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Collapsed;
int k = ContentPanelCanvas.Children.Count;
for (int i = 0; i < k; i++)
{
line =(System.Windows.Shapes.Line) ContentPanelCanvas.Children[0];
line.StrokeThickness = 3;
ContentPanelCanvas.Children.RemoveAt(0);
maincanvas.Children.Add(line);
}
}
我正在创建简单的 canvas 应用程序,它是从名为 canvas 的 canvas 中获取签名的,"ContentPanelCanvas" 来自名为 "pop-up" 的网格,并且要从 "Pop-up" 设置签名并在 canvas 上设置名为 "maincanvas"。 如果你知道请帮助我解决这个问题如何获取 canvas 上下文并将其设置为空白 canvas.Here 是我使用的代码。
在Xaml中:
<Grid x:Name="ContentPanel">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Canvas Name="maincanvas">
</Canvas>
</Grid>
<Grid Name="Popup" Visibility="Collapsed" Grid.Row="0" Width="480" Height="300" Background="Black">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Canvas Name="ContentPanelCanvas" Background="Beige">
</Canvas>
</Grid>
<Grid Grid.Row="1" HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" x:Name="btnOK" Content="OK" Tap="btnOK_Tap"/>
<Button Grid.Column="1" x:Name="btnCancel" Content="Clear" Tap="btnCancel_Tap"/>
</Grid>
</Grid>
</Grid>
这是 .CS 文件:
private Point currentPoint;
private Point oldPoint;
Line line;
public SingleImage()
{
InitializeComponent();
this.ContentPanelCanvas.MouseMove += new MouseEventHandler(ContentPanelCanvas_MouseMove);
this.ContentPanelCanvas.MouseLeftButtonDown += new MouseButtonEventHandler(ContentPanelCanvas_MouseLeftButtonDown);
}
void ContentPanelCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
currentPoint = e.GetPosition(ContentPanelCanvas);
oldPoint = currentPoint;
}
void ContentPanelCanvas_MouseMove(object sender, MouseEventArgs e)
{
currentPoint = e.GetPosition(this.ContentPanelCanvas);
line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y };
line.Stroke = new SolidColorBrush(Colors.Purple);
line.StrokeThickness = 3;
this.ContentPanelCanvas.Children.Add(line);
oldPoint = currentPoint;
}
private void Button_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Visible;
ContentPanelCanvas.Children.Clear();
}
private void btnOK_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Collapsed;
// Here i want to set signature to main canvas how to pass signature
from one canvas to another?//
}
private void btnCancel_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
ContentPanelCanvas.Children.Clear();
}
private void btnOK_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Popup.Visibility = Visibility.Collapsed;
int k = ContentPanelCanvas.Children.Count;
for (int i = 0; i < k; i++)
{
line =(System.Windows.Shapes.Line) ContentPanelCanvas.Children[0];
line.StrokeThickness = 3;
ContentPanelCanvas.Children.RemoveAt(0);
maincanvas.Children.Add(line);
}
}