Я пытаюсь нарисовать линию вручную в WPF, переопределив метод OnRender элемента управления и вызвав метод DrawLine для данного DrawingContext.Я где-то читал, что этот вызов метода не сразу рисует линию, но я не могу понять, как на самом деле вызвать появление линии.
Я пытался использовать комбинацию PathGeometry, LineSegments, Lineи полилинии управления.Я мог нарисовать то, что хотел тогда, но смещения были не совсем правильными (т.е. при рисовании линии было хорошо, когда при рисовании ломаной линии все становилось неправильно смещенным).
Любой совет по этому вопросу был бы хорош.
РЕДАКТИРОВАТЬ
Pen Code
private static readonly Pen LinePen = new Pen(new SolidColorBrush(Colors.Green), 3.0d);
private static readonly Pen WayPointPen = new Pen(new SolidColorBrush(Colors.Gray), 3.0d);
Render Code
protected override void OnRender(DrawingContext drawingContext)
{
// Draw way points
this.DrawWayPoints(drawingContext);
if (mDrawing)
{
// Draw current line
this.DrawCurrentLine(drawingContext);
}
}
private void DrawCurrentLine(DrawingContext context)
{
if(mStartPoint.HasValue && mEndPoint.HasValue)
{
// Draw the line
context.DrawLine(LinePen, mStartPoint.Value, mEndPoint.Value);
}
}
private void DrawWayPoints(DrawingContext context)
{
if (mWayPoints.Count < 2)
{
return;
}
// Draw all points
for (int i = 0; i < mWayPoints.Count - 1; i++)
{
var start = mWayPoints[i];
var end = mWayPoints[i + 1];
// Draw the line
context.DrawLine(WayPointPen, start, end);
}
}
РЕДАКТИРОВАТЬ
Тестовый проект: http://dl.dropbox.com/u/12763956/DrawingTest.zip (Тестовый проект, написанный в Visual Studio 2010)
Использование: - Щелчок левой кнопкой мыши в поднятой областидобавить точки в список.- Щелкните правой кнопкой мыши, чтобы закончить рисование и очистить точки.
Примечание. Пользовательские нарисованные линии (в переопределении OnRender) не отображаются.