|
分類:[C#]
環境 VisualStrudio C#.Net + AForge.NET (Windows7)
C#を始めて6ヶ月程の者です。C;; builderは数年やって居ます。
カメラの制御プログラムをAforge.Netのサイトを参考に作成しています。 全ての必要な処理は無事実行出来る様に成りました。 そこで、次にカメラの制御に詳しく無い人の為に簡単にカメラのプログラムを書ける様に、カメラの制御を関数化しようと思い、これも殆ど関数化出来ました。 最後に一つだけ、カメラのフォーカス等を調整する部分が関数化出来なくて困っています。
最初のソースがコンパイルが通り、実行出来ているものです。 次にその下の様に、別クラスでこの内容を作成し、元のクラスから関数で呼ぼうとした時、this.Handleでコンパイルエラーが(当然ですが)出ました。
thisの用法を調べたのですが良く分りません。this.Handleを元のクラスから引数で渡しても、関数の中で元のクラスを参照させても良いのですがthisの意味を余り良く分っていないのでとっかかりが掴めません。 このthis.Handleをどう替えたら良いのでしょうか、若しくはこの様なものは関数に内容をを渡せないものなのでしょうか。 よろしくお教えください。
よろしくお願いいたします。
コンパイルが通り、実行出来たプログラム。 static public FilterInfoCollection videoDevice; static public VideoCaptureDevice videoSource = null; static public VideoCapabilities[] videoCapabilities;
publicc void btnParamSet_Click(object sender, EventArgs e) { if((videoSource != null) && (videoSource is VideoCaptureDevice)) { try { ((VideoCaptureDevice)videoSource).DisplayPropertyPage(this.Handle); } catch(NotSupportedException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
コンパイルエラーに成るプログラム。 static public FilterInfoCollection videoDevice; static public VideoCaptureDevice videoSource = null; static public VideoCapabilities[] videoCapabilities;
af.AfParamSet(); //関数を呼ぶ
af はnewで別クラスを設定。
別クラス
public void AfParamSet() { if((videoSource != null) && (videoSource is VideoCaptureDevice)) { try { ((VideoCaptureDevice)videoSource).DisplayPropertyPage(this.Handle); //<コンパイルエラー } catch(NotSupportedException ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
|