今更ながら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の変更が交互に行われているのが目で追えるレベル。
モチベーションが逆に下がる結果となりました。
Author And Source
この問題について(今更ながらWPFに置き換えてみる(6)), 我々は、より多くの情報をここで見つけました https://qiita.com/Insetrect/items/df8178ab41189ea5f9b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .