Я знаю, как рисовать прямоугольник с толщиной обводки с помощью CanvasDrawingSession. Но проблема в том, что толщина обводки растет внутри и снаружи прямоугольника. Мне нужно, чтобы толщина обводки увеличивалась только внутри прямоугольника. Я не знаю. как этого добиться !! Что я пробовал?
Мой код xaml:
<Canvas x:Name="MyCanvas"> </Canvas>
Мой c# Код:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
CanvasVirtualControl canvasVirtualControl = new CanvasVirtualControl();
canvasVirtualControl.Width = 1486;
canvasVirtualControl.Height = 610;
MyCanvas.Children.Add(canvasVirtualControl);
Canvas.SetLeft(canvasVirtualControl, 0);
Canvas.SetTop(canvasVirtualControl, 100);
canvasVirtualControl.RegionsInvalidated += CanvasVirtualControl_RegionsInvalidated;
}
private void CanvasVirtualControl_RegionsInvalidated(CanvasVirtualControl sender, CanvasRegionsInvalidatedEventArgs args)
{
CanvasDrawingSession drawingSession;
Rect rect = new Rect(args.InvalidatedRegions[0].Left, args.InvalidatedRegions[0].Top, args.InvalidatedRegions[0].Width, args.InvalidatedRegions[0].Height);
using (drawingSession = sender.CreateDrawingSession(rect))
{
drawingSession.DrawRectangle(new Rect(0, 0, 200, 200), Windows.UI.Color.FromArgb(255, 255, 0, 0), 40);
}
}
Почему мой прямоугольник нарисован вот так? Я думаю, это из-за того, что толщина штриха растет внутри и снаружи прямоугольника. Как решить рисовать прямоугольник с толщиной штриха только внутри прямоугольника?
Обновленный вопрос:
при объявлении недействительным всей области CanvasVirtualControl толщина обводки увеличивается внутри и за пределами прямоугольника. Если я аннулирую конкретную область angular прямоугольника CanvasVirtualControl, толщина обводки увеличивается только внутри.
Мой код Xaml:
<Canvas x:Name="MyCanvas">
<Button Content="InvalidateWholeRegion" Height="100" Canvas.Left="0" Canvas.Top="0" Click="InvalidateWholeRegion"/>
<Button Content="InvalidateParticularRegion" Height="100" Canvas.Left="300" Canvas.Top="0" Click="InvalidateParticularRegion"/>
</Canvas>
Мой c# Код:
CanvasVirtualControl canvasVirtualControl;
private void Page_Loaded(object sender, RoutedEventArgs e)
{
canvasVirtualControl = new CanvasVirtualControl();
canvasVirtualControl.Width = 1486;
canvasVirtualControl.Height = 610;
MyCanvas.Children.Add(canvasVirtualControl);
Canvas.SetLeft(canvasVirtualControl, 0);
Canvas.SetTop(canvasVirtualControl, 100);
canvasVirtualControl.RegionsInvalidated += CanvasVirtualControl_RegionsInvalidated;
}
private void CanvasVirtualControl_RegionsInvalidated(CanvasVirtualControl sender, CanvasRegionsInvalidatedEventArgs args)
{
CanvasDrawingSession drawingSession;
Rect rect = new Rect(args.InvalidatedRegions[0].Left, args.InvalidatedRegions[0].Top, args.InvalidatedRegions[0].Width, args.InvalidatedRegions[0].Height);
using (drawingSession = sender.CreateDrawingSession(rect))
{
drawingSession.DrawRectangle(new Rect(rect.X, rect.Y, 100, 100), Windows.UI.Color.FromArgb(255, 255, 0, 0), 40);
}
}
private void InvalidateParticularRegion(object sender, RoutedEventArgs e)
{
canvasVirtualControl.Invalidate(new Rect(200, 200, 100, 100));
}
private void InvalidateWholeRegion(object sender, RoutedEventArgs e)
{
canvasVirtualControl.Invalidate(new Rect(0, 0, 1486, 610));
}
Как рисовать strokeThickess растет снаружи также при аннулировании конкретной области?