InkCanvas рисование пользовательских форм (прямоугольник)
Я создаю программу как краску. Сейчас пытаюсь создать стандартные фигуры. Но у меня проблема с рисованием прямоугольника. Я использую метод DrawCore
для создания пользовательских фигур на InkCanvas.
код:
protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes)
{
if (drawingContext == null)
{
throw new ArgumentNullException("drawingContext");
}
if (null == drawingAttributes)
{
throw new ArgumentNullException("drawingAttributes");
}
DrawingAttributes originalDa = drawingAttributes.Clone();
SolidColorBrush brush = new SolidColorBrush(color);
System.Windows.Media.Pen pen = new System.Windows.Media.Pen(new SolidColorBrush(color), 1);
brush.Freeze();
drawingContext.DrawRectangle(null, pen, new Rect(GetTheLeftTopPoint(), GetTheRightBottomPoint()));
}
}
System.Windows.Point GetTheLeftTopPoint()
{
if (this.StylusPoints == null)
throw new ArgumentNullException("StylusPoints");
StylusPoint tmpPoint = new StylusPoint(double.MaxValue, double.MaxValue);
foreach (StylusPoint point in this.StylusPoints)
{
if ((point.X < tmpPoint.X) || (point.Y < tmpPoint.Y))
tmpPoint = point;
}
return tmpPoint.ToPoint();
}
System.Windows.Point GetTheRightBottomPoint()
{
if (this.StylusPoints == null)
throw new ArgumentNullException("StylusPoints");
StylusPoint tmpPoint = new StylusPoint(0, 0);
foreach (StylusPoint point in this.StylusPoints)
{
if ((point.X > tmpPoint.X) || (point.Y > tmpPoint.Y))
tmpPoint = point;
}
return tmpPoint.ToPoint();
}
Но моя проблема в том, что я могу рисовать не все направления. то есть:
Как это исправить?
Спасибо.