이제 WPF로 바꾸어보세요 (6)

Canvas를 이용한 아날로그 시계 그리기



VB 버전에서는 미니 아날로그 시계를 NotifyIcon에 넣거나 시보 양식에 표시하는 데
GDI를 사용하여 그리기를했습니다. 우선 아무것도 생각하지 않고 Line이나 Ellipse로 그려 테스트 화면에 내려 보면, 이런 느낌.


음 - 벡터 이미지는 여전히 아름답습니다.
DropShadow도 설정할 수있어 훌륭합니다.
canvasへの描画部分

            //Drop Shadow効果設定
            var DSE = new DropShadowEffect();
            DSE.BlurRadius = aCanvas.Height / 50;
            DSE.Direction = 270;
            DSE.Opacity = 0.2;
            DSE.ShadowDepth = aCanvas.Height / 20;
・・・中略
            //時針描画
            Line hhLine = new Line();
            hhLine.Stroke = Brushes.White;
            hhLine.StrokeThickness = aCanvas.Width / 20;
            if (hhLine.StrokeThickness < 1)
            {
                hhLine.StrokeThickness = 1;
            }
            hhLine.X1 = aCanvas.Width / 2;
            hhLine.Y1 = aCanvas.Height / 2;
            hhLine.X2 = hhHandEdPt.X;
            hhLine.Y2 = hhHandEdPt.Y;
            hhLine.StrokeStartLineCap = PenLineCap.Round;
            hhLine.StrokeEndLineCap = PenLineCap.Round;
            hhLine.Effect = DSE;
・・・中略
            aCanvas.Children.Add(hhLine);

화면 전환 테스트



동기 유지를 위해 이전 테스트 앱을 가공하고 왼쪽 상단의 작은 아이콘 (16 × 16 정도)에 현재 아날로그 시계 이미지를 설정하고 그것을 클릭하면 프로세스 아이콘적인 크기로 양식의 크기를 변경 하면서 작은 아이콘을 전면으로 한다는 움직임을 설정해 보았습니다.
이런 느낌.


클럭을 쓴 Canvas를 scaletransform+애니메이션시켜, 동시에 Window의 사이즈를 둘레 변경하고 있습니다만, 당연히 싱크로도 하지 않고, 무엇보다 느린. 너무 좋다.
Width와 height의 변경이 번갈아 이루어지고 있는 것이 눈으로 쫓는 레벨.
동기 부여가 반대로 떨어지는 결과가 되었습니다.

좋은 웹페이지 즐겨찾기