私は 2 を持っていPanels
ます。両方のパネルが一定時間ロードされます。両方のパネルにアニメーションを追加したい
// animation start of panel1
panel1.show();
// animation start of panel2
panel2.show();
アニメーションが終わると、panel1
2コマ目のアニメーションが始まります。そう今、両方のパネルを同時にアニメーション化したいと考えています。
マルチスレッドならそれができると思います。私の場合、これがどのように機能するかを教えてもらえますか?
public static class Util {
public enum Effect { Roll, Slide, Center, Blend }
public static void Animate(Control ctl, Effect effect, int msec, int angle)
{
int flags = effmap[(int)effect];
if (ctl.Visible) {flags |= 0x10000; angle += 180;}
else {
if (ctl.TopLevelControl == ctl) flags |= 0x20000;
else if (effect == Effect.Blend) throw new ArgumentException();
}
flags |= dirmap[(angle % 360) / 45];
bool ok = AnimateWindow(ctl.Handle, msec, flags);
if (!ok) throw new Exception("Animation failed");
ctl.Visible = !ctl.Visible;
}
private static int[] dirmap = { 1, 5, 4, 6, 2, 10, 8, 9 };
private static int[] effmap = { 0, 0x40000, 0x10, 0x80000 };
[DllImport("user32.dll")] private static extern bool
AnimateWindow(IntPtr handle, int msec, int flags);
}
private void Form1_Load(object sender, EventArgs e) {
Util.Animate(radPanel1, Util.Effect.Slide, 700, 360);
radPanel1.Show();
expandablePanel1.Expanded = true;
}