2012-02-08 8 views
0

それを却下し、その後1秒を待って、画像をペイント。なぜこのコードがうまくいかないのでしょうか?ボックスは塗装されません。スレッドを使用すると、アニメーションによってボックスが消去されます。は、私はボックスを閉じ、その後、1秒を待って、ユーザが画面に触れた緑色のボックスをペイントしようとしている

public static void DrawClick(RectangleF rect, UIView theView) 
    { 
     var center = Center(rect); 
     center.X = center.X + 30f; 
     center.Y = center.Y + 30f; 
     var greenRect = new RectangleF(center, new SizeF(60f, 60f)); 
     var clickView = new UIImageView(greenRect); 
     clickView.Image = appDelegate.store.GetArt("greenbox.png"); 
     theView.AddSubview(clickView); 
     //Wait 1 second 
     System.Threading.Thread.Sleep(1000); 
     clickView.RemoveFromSuperview(); 
    } 

おかげで、 リック

答えて

2

あなたは1秒のための主要なUIスレッドをブロックし、それがレンダリングするための方法はありません。

これを実行する方法の1つは、有効期限が1秒のSystem.Timers.Timerです。起動時にUIを更新するには、BeginInvokeOnMainThreadを必ず呼び出してください。

BeginInvokeOnMainThreadhereSystem.Timers.Timerの1つです。

より涼しいオプションは、アルファ値のアニメーションを使用することです(hereを参照)。

関連する問題