제가 현재는 이미지 2개를 사용해서 한개는 원 이미지에 0~360도 각도가 있는 이미지에 화살표이미지를 사용해서 제가 84도를 입력하면 화살표가 84도를 가리키게 되있습니다.
그냥 이대로 써도 상관없을 것 같지만 혹시 WPF에서 좀더 편한 방법이 있을까해서 질문 드립니다.
제가 현재는 이미지 2개를 사용해서 한개는 원 이미지에 0~360도 각도가 있는 이미지에 화살표이미지를 사용해서 제가 84도를 입력하면 화살표가 84도를 가리키게 되있습니다.
그냥 이대로 써도 상관없을 것 같지만 혹시 WPF에서 좀더 편한 방법이 있을까해서 질문 드립니다.
이미지를 사용하지 않고 방위를 표시하는 컨트롤을 만들고 싶다는 말씀이신가요?
이러한 경우 현재 구현하신 대로 이미지 두 장과 RenderTransform
을 사용하는 것이 가장 쉬운 구현 방법일 듯 하네요.
아래와 같은 컨트롤을 만들려면 코드로 눈금이나 숫자를 그려줘야 하는데 이미지로 구현하는 것 보다 편하지는 않죠.
[A WPF Rotary Control - CodeProject]
(A WPF Rotary Control - CodeProject)
앗 여기 영상이 안올라가네요
간단하게 구성해봤는데 이게 맞는지 모르겠네요
<Grid>
<Image Source="C:\Users\user\Pictures\그림1.png"/>
<Image Source="C:\Users\user\Pictures\그림2.png" Width="200" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform x:Name="ImageRotateTransform" Angle="0"/>
<TranslateTransform/>
</TransformGroup>
</Image.RenderTransform>
</Image>
<TextBox Margin="10,201,666,179" x:Name="AngleText"/>
<Button Name="RotateMinus10" Content="button" Click="Rotate_Click" Margin="10,260,666,112"/>
</Grid>
private void Rotate_Click(object sender, RoutedEventArgs e)
{
ImageRotateTransform.Angle += int.Parse(AngleText.Text);
}
al6uiz님께서 말씀하신것 처럼 RenderTransform을 사용하면 간단하게 구현 가능할 것 같습니다.
추가로 전에 봤던 글에서 카카오 네이버 지도에서 돌아가는 아이콘 구현은 각도에 맞추어 이미지를 변경한다고 봤습니다. 각도를 입력받으면 RenderTransform을 사용할지 이미지를 변경할지는 고민해보시면 좋을 것 같습니다.
출처는 찾으면 남겨둘게요
ps) 닷넷데브 글이었네요 ㅋㅋㅋㅋ
아 현재 사용하는 방법이 가장 편한게 맞군요
감사합니다
RotateTransform주고 RenderTransformOrigin으로 중심점잡아서 돌리고있었는데
지금 이대로 해야겠네요~
감사합니다
이미지 해상도에 따라 돌릴 때 조금 깨질 수 있어요, 테스트 해보시고 깨지면 이미지 크기를 줄이시거나 방향에 따른 이미지를 사용하시는 걸 추천드립니다.