당신이 갈 두 가지 접근 방식
(210)
결과
뷰 박스 접근
당신이 컨트롤의 크기의 삼각형을 렌더링에 관심이 있다면 다음이 위의
<Grid>
<Viewbox Stretch="Fill">
<Path Data="M 1.5,0 L 3,3 0,3 Z"
Width="3" Height="3"
Fill="Gray" />
</Viewbox>
</Grid>
당신의 선택이 될 수 접근 방식은 삼각형을 렌더링하고 부모 contr의 크기로 크기가 조정됩니다 ol을 통해 Viewbox에 추가하여 경로에 회전 변환을 추가하고 필요에 따라 삼각형을 회전 할 수 있습니다. 당신은 단순히 상관없이 삼각형 필요하지 않은
이 방법이 권장되는 방법 변환기
<Grid xmlns:l="clr-namespace:CSharpWPF"
x:Name="control">
<Grid.Resources>
<l:ElementToTrianglePointsConverter x:Key="ElementToTrianglePointsConverter" />
</Grid.Resources>
<Polygon Points="{Binding ElementName=control, Converter={StaticResource ElementToTrianglePointsConverter}}"
FillRule="Nonzero"
Fill="Gray" />
</Grid>
접근 위
namespace CSharpWPF
{
public class ElementToTrianglePointsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
FrameworkElement element = value as FrameworkElement;
PointCollection points = new PointCollection();
Action fillPoints =() =>
{
points.Clear();
points.Add(new Point(element.ActualWidth/2, 0));
points.Add(new Point(element.ActualWidth, element.ActualHeight));
points.Add(new Point(0, element.ActualHeight));
};
fillPoints();
element.SizeChanged += (s, ee) => fillPoints();
return points;// store;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
작은 버그가 변환기를 사용하여
다각형, 나는 항상 창의 크기를 재조정해야한다. 삼각형을 볼 수 있기 전에. 디자인 타임에는 기본적으로 볼 수 있지만 윈도우 크기를 조정하지 않으면 런타임에는 볼 수 없습니다. polygon에는 점이 있지만 렌더링되지는 않았지만, 왜 그런지는 모르겠다. 문제를 조사해야합니다
삼각형이 2 점입니까? –
아니요. 그러나 오류의 원인이되는 코드의 예일뿐입니다. 그러나 나는 한 점을 선언했다. – vdrake6
Converters가 도움이 될 수 있지만 여전히 Polygon의 'Points'속성을 바인딩 할 수는 있지만 변경에 응답하지 않을 수 있습니다. – pushpraj