WPF (잘 실버 라이트 4)의 1024x768 파란 캔버스에 '올바르게'짧은 검은 색 선을 그리는 아주 간단한 코드가 있습니다. 내가 라인 세그먼트 (segment)의 종점을 변경하는 경우 대신 상대 시작 지점에서 Y를 변경하는 나는 또한 변경할 수 있도록왜이 간단한 LineSegment가 Silverlight의 캔버스 중심에서 하단 왼쪽으로 점프합니까?
<UserControl x:Class="SimpleCanvas.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Loaded="UserControl_Loaded">
<Grid x:Name="LayoutRoot" Background="White">
<Canvas x:Name="PathCanvas" Width="1024" Height="768" Background="Blue"/>
</Grid>
</UserControl>
이곳은, 이제 코드 숨김
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var myPathFigure = new PathFigure
{
StartPoint = new Point(492, 748)
};
var line1 = new LineSegment
{
Point = new Point(492, 708)
};
myPathFigure.Segments.Add(line1);
var myPathGeometry = new PathGeometry();
myPathGeometry.Figures.Add(myPathFigure);
var myPath = new Path
{
Data = myPathGeometry,
Stretch = Stretch.Fill,
Stroke = new SolidColorBrush(Color.FromArgb(0xFF, 0x0, 0x0, 0x0)),
StrokeThickness = 10
};
PathCanvas.Children.Add(myPath);
}
입니다 X는 하나의 픽셀에 불과하지만 전체 선이 캔바스의 왼쪽 상단에 렌더링됩니다. 다음은 개정 된 코드 숨김입니다.
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var myPathFigure = new PathFigure
{
StartPoint = new Point(492, 748)
};
var line1 = new LineSegment
{
Point = new Point(491, 708)
};
myPathFigure.Segments.Add(line1);
var myPathGeometry = new PathGeometry();
myPathGeometry.Figures.Add(myPathFigure);
var myPath = new Path
{
Data = myPathGeometry,
Stretch = Stretch.Fill,
Stroke = new SolidColorBrush(Color.FromArgb(0xFF, 0x0, 0x0, 0x0)),
StrokeThickness = 10
};
PathCanvas.Children.Add(myPath);
}
둘 다 캔버스의 가운데 아래에 렌더링되거나 둘 다 왼쪽 상단에 렌더링되는 경우 이해할 수 있습니다. 하지만 왜 첫 번째 코드 블록을 사용하면 선이 가운데 아래를 렌더링하고 두 번째 코드 블록이 선을 왼쪽 위 렌더링하는지 알 수 없습니다.
Canvas.Top 또는 Canvas.Left를 사용하고 있지 않습니다.
모든 통찰력을 감사하게 받았습니다!
감사합니다. 루크 - 맞습니다. – dumbledad