投稿者 VB+VC# Beginner  (社会人) 投稿日時 2020/9/6 19:51:34
PictureBox と ShapeContainer についてお尋ねします。

Visual Basic で、アナログ時計を作る方法について、調べているうちに、
某書籍の抜粋のページを見つけ、その書籍を購入しました。
その書籍の説明では、
1.PictureBox をフォームに配置する。
2.Timer1.Tick のイベントで、時計盤(外周円、目盛、数字)を描画し、
 針(秒針・分針・時針)を描画する。
という流れでコードを書かれていました。
私はフォームの背景に写真を配置したので、

g.Clear(Me.BackColor)

の箇所を、

Pic_My_Analog_Clock.Refresh()

と書き換えたら、どうにか時計は動きました。
というより、「1秒ごとに時計を描画し、消してから再度描画する。」
という感じで、画面が点滅しています。

針を回転させる方法はないかとさらに調べていくと、
VisualBasic.PowerPacks をインストールし、LineShape の (x1,y1),(x2,y2)
の座標を計算すると、針は回転することがわかりました。
((x2,y2)を中心とするので (x1,y1) だけ変えればよい)
その方法で、針が回転することを確かめてから、
前述の PictureBox に時計盤(外周円、目盛、数字)を描画して、針を3本
LineShape で描画しましたが、PictureBox を一番背面にしても、フォームの
デザイン中に針は消え、「開始」を押しても、時計盤しか見えません。
(前述の「xxx.Refresh()」は今回は使っていません。
 時計盤の記述はフォームの load にしました。)
仕方がないので、PictureBox を消して、ShapeContainer に針、円、目盛を描画しました。

おそらく、私の知識不足で、PictureBox と ShapeContainer を同時に使うことが
できなかったと考えています。
アナログ時計のように、同心円の時計盤と針を描画する場合、
PictureBox と ShapeContainer を同時に重ねて利用することは可能ですか?
宜しくお願いします。