C#の仕様について質問です。
現在、Wiiリモコンを用いて電子黒板のシステムを作ろうとしています。Wiiリモコンのライブラリを用いて赤外線を受信し、そこにマウスカーソルを追従させるものです。
そこで、いろんなスクリーンやディスプレイの大きさに対応するために、キャリブレーションの処理を用いろうと考えています。
まず、赤外線を移すスクリーンの四隅に照準を出して、そこを赤外線で当てて初期値を取るものです。
そこで照準を描画し、赤外線を受け取るごとに他の場所に照準を描画する処理を入れようとしたのですが、1か所目の描画をしたときに再描画をしたら「Argumentexception 使用されたパラメータが有効ではありません」という表記が出ます。
調べたところリソースリークによるものではないかと思い、使った変数のリソースの解放をしたのですが、それでも治りません。これは一体どうすればいいのでしょうか・・・
分かる方がいれば教えていただきたいです。
C#
1public void Calibration(WiimoteState ws) 2 { 3 int X_Screen = Screen.PrimaryScreen.Bounds.Width; 4 int Y_Screen = Screen.PrimaryScreen.Bounds.Height; 5 6 //描画先のオブジェクトを生成 7 Bitmap canvas = new Bitmap(X_Screen, Y_Screen); 8 //ImageオブジェクトのGraphicsオブジェクト作成 9 Graphics g = Graphics.FromImage(canvas); 10 11 //画像読み込み 12 Image img = Image.FromFile(@"C:\Users\Gluek\Documents\Visual Studio 2010\Projects\WiimoteLib01\WiimoteLib01\img\rticle.png"); 13 //画像をcanvasに表示(画像変数, x位置, y位置, 横の大きさ, 縦の大きさ) 14 g.DrawImage(img, X_Screen-50, 0, 50, 50); 15 //Imageオブジェクトのリソース解放 16 img.Dispose(); 17 //GRaphicsオブジェクトのリソース解放 18 g.Dispose(); 19 //PictureBox1に表示させる 20 pictureBox2.Image = canvas; 21 //赤外線を受信したら以下の処理をする 22 if (ws.IRState.IRSensors[0].Found) 23 { 24 pictureBox2.Image.Dispose(); 25 pictureBox2.Image = null; 26 pictureBox2.Refresh(); 27 g.DrawImage(img, 200, 0, 50, 50); 28 pictureBox2.Image = canvas; 29 } 30 31 } 32 #endregion 33
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/05 09:22