in Testing/SamplesTest/SamplesTest/MnistTest.cs [81:223]
public void Draw(uint digit)
{
PointerInputDevice penDevice = new PointerInputDevice(PointerKind.Pen);
ActionSequence sequence = new ActionSequence(penDevice, 0);
Point canvasCoordiante = inkCanvas.Coordinates.LocationInViewport;
switch (digit)
{
case 0:
{
// drawing a circle around a center
// start from cos(0), sin(0)
var centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
var centerY = canvasCoordiante.Y + inkCanvas.Size.Height / 2;
var radius = inkCanvas.Size.Width / 3;
var stepSize = 10;
DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
break;
}
case 1:
// (0,0) (x,0)
// ┌───────┐ Draw a basic line from top to bottom.
// │ | │
// │ | │
// └───────┘
// (y,0) (x,y)
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + inkCanvas.Size.Width / 2,
canvasCoordiante.Y + inkCanvas.Size.Height / 9,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + inkCanvas.Size.Width / 2,
canvasCoordiante.Y + 8 * inkCanvas.Size.Height / 9,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
break;
case 2:
break;
case 3:
break;
case 4:
// (0,0) (x,0)
// ┌───────┐
// │ / | │
// │ ───── |
// │ | │
// └───────┘
// (y,0) (x,y)
// vertical line
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
canvasCoordiante.Y + inkCanvas.Size.Height / 8,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
canvasCoordiante.Y + 5 * inkCanvas.Size.Height / 6,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
// horizontal line
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + inkCanvas.Size.Width / 4,
canvasCoordiante.Y + inkCanvas.Size.Height / 2,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 3 * inkCanvas.Size.Width / 4,
canvasCoordiante.Y + inkCanvas.Size.Height / 2,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
// diagonal
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + inkCanvas.Size.Width / 4,
canvasCoordiante.Y + inkCanvas.Size.Height / 2,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 2 * inkCanvas.Size.Width / 3,
canvasCoordiante.Y + inkCanvas.Size.Height / 8,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
break;
case 5:
break;
case 6:
break;
case 7:
// (0,0) (x,0)
// ┌───────┐
// │ ───── |
// │ / │
// │ / │
// └───────┘
// (y,0) (x,y)
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + inkCanvas.Size.Width / 6,
canvasCoordiante.Y + inkCanvas.Size.Height / 6,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerDown(PointerButton.PenContact));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 6 * inkCanvas.Size.Width / 6,
canvasCoordiante.Y + inkCanvas.Size.Height / 6,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerMove(
CoordinateOrigin.Viewport,
canvasCoordiante.X + 3 * inkCanvas.Size.Width / 6,
canvasCoordiante.Y + 5 * inkCanvas.Size.Height / 6,
TimeSpan.Zero));
sequence.AddAction(penDevice.CreatePointerUp(PointerButton.PenContact));
break;
case 8:
{
// two circles. Smaller circle on top of bigger circle
var centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
var centerY = canvasCoordiante.Y + inkCanvas.Size.Height / 5 + inkCanvas.Size.Height / 10;
var radius = inkCanvas.Size.Height / 6;
var stepSize = 10;
DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
centerX = canvasCoordiante.X + inkCanvas.Size.Width / 2;
centerY = canvasCoordiante.Y + 3 * inkCanvas.Size.Height / 5 + inkCanvas.Size.Height / 10;
radius = Convert.ToInt32(1.4 * inkCanvas.Size.Height / 6);
DrawCircle(penDevice, sequence, centerX, centerY, radius, stepSize);
break;
}
case 9:
break;
default:
Assert.Fail("wrong argument");
break;
}
session.PerformActions(new List<ActionSequence> { sequence });
}