Я искал примеры для этого, но те, с которыми я столкнулся, похоже, сосредоточены на более простых вещах, таких как установка атрибутов InkCanvas DefaultDrawingAttributes, таких как Ширина, Высота, Цвет и т. Д. Не похоже, что материала много для этого.
Например, если я удерживаю кнопку мыши, я вижу, как она рисует линии. Что если я хочу нарисовать эллипсы вместо линий или нарисовать эллипсы вокруг точек выборки между началом и концом линии?
Я знаю, что могу получить новые очки с событием StrokeCollected, но кроме этого я понятия не имею, куда идти. Этот парень , казалось, что он получил код MSDN, работающий, но я не мог этого сделать. Я знаю только, как создать интерфейс с использованием XAML, и, похоже, здесь тоже нет примера.
1010 * редактировать *
Создал переменную класса StrokeCollection с именем thisIsNotNice, инициализировал в конструкторе и сделал это:
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
myInkCanvas.Strokes = thisIsNotNice;
foreach (StylusPoint p in e.Stroke.StylusPoints)
{
StylusPointCollection spc = new StylusPointCollection();
spc.Add(p);
Stroke s = new Stroke(spc);
s.DrawingAttributes.Height = 3;
s.DrawingAttributes.Width = 3;
thisIsNotNice.Add(s);
}
e.Handled = true;
}
Но это не работает так, как должно. Эллипсы нарисованы, но линии, нарисованные мышью, все еще там. Кроме того, по какой-то причине, в первый раз он работает так, как должен, рисуя только эллипсы, но потом рисует как эллипсы, так и линии. Но если я сделаю это вместо этого:
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
myInkCanvas.Strokes = new System.Windows.Ink.StrokeCollection();
e.Handled = true;
}
Линии не сохраняются на экране. Поэтому я не понимаю, почему они не стираются в приведенном выше коде.
Если я сделаю это:
private void InkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
foreach (Stroke s in myInkCanvas.Strokes)
System.Diagnostics.Trace.WriteLine(s);
e.Handled = true;
}
Я также вижу, что холст содержит штрихи.
Хотя удаление штрихов после их добавления в коллекцию далеко от идеала, оно, по крайней мере, делает то, что я хочу. Я мог бы настроить цвет линии так же, как фон, но тогда я не смог бы получить только эллипсы. Я тоже могу скопировать их в отдельную коллекцию, но это просто ужасно.