【发布时间】:2011-09-11 12:18:53
【问题描述】:
我如何能够手动提交事件以供 InkCanvas 接收?
我需要做的,是将 InkCanvas 的模式设置为墨迹模式,然后,将虚拟事件发送到 InkCanvas,这样我就可以获得用户使用真实鼠标的绘图行为。
谢谢
【问题讨论】:
我如何能够手动提交事件以供 InkCanvas 接收?
我需要做的,是将 InkCanvas 的模式设置为墨迹模式,然后,将虚拟事件发送到 InkCanvas,这样我就可以获得用户使用真实鼠标的绘图行为。
谢谢
【问题讨论】:
以下代码 sn-p 显示了在 InkCanvas 中绘制形状的示例:
StylusPointCollection stroke1Points = new StylusPointCollection();
stroke1Points.Add(new StylusPoint(50,10));
stroke1Points.Add(new StylusPoint(90,50));
stroke1Points.Add(new StylusPoint(10,50));
stroke1Points.Add(new StylusPoint(50,10));
Stroke stroke1 = new Stroke(stroke1Points);
canvas.Strokes.Add(stroke1);
其中 canvas 是 InkCanvas 类型。以上在画布中生成了一个三角形。
“是的,如果对你有帮助,你可以接受这个答案。”
【讨论】:
这样的?
private void inkSurface_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
inkSurface.CaptureMouse();
_inkStroke = new Stroke(
e.StylusDevice.GetStylusPoints(inkSurface));
_inkStroke.DrawingAttributes.Width = 5;
_inkStroke.DrawingAttributes.Height = 5;
_inkStroke.DrawingAttributes.Color = Colors.Black;
inkSurface.Strokes.Add(_inkStroke);
e.Handled = true;
}
private void inkSurface_MouseMove(object sender, MouseEventArgs e)
{
if (_inkStroke != null)
{
_inkStroke.StylusPoints.Add(
e.StylusDevice.GetStylusPoints(inkSurface));
}
e.Handled = true;
}
private void inkSurface_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
inkSurface.ReleaseMouseCapture();
e.Handled = true;
}
【讨论】: