-3

私は 2 を持っていPanelsます。両方のパネルが一定時間ロードされます。両方のパネルにアニメーションを追加したい

// animation start of panel1
panel1.show();

// animation start of panel2
panel2.show();

アニメーションが終わると、panel12コマ目のアニメーションが始まります。そう今、両方のパネルを同時にアニメーション化したいと考えています。

マルチスレッドならそれができると思います。私の場合、これがどのように機能するかを教えてもらえますか?

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;
} 
4

1 に答える 1

-2

I suggest using BackgroundWorker or Timer component.

于 2013-02-27T14:50:46.597 に答える