レンズと焦点

ぶっちゃけ焦点とかよく分からない。 レンズ 像を拡大・縮小させるもの。 ガラスと空気の屈折率の差を利用して、光線を屈折させ、光線の束を収束・発散させる。凸レンズは光を収束させ、凹レンズは発散させる。 屈折:光波や音波などが、一つの媒質から他の…

C++/CLI _デバッグで変数の中身が見れない

C# プロジェクトで動かす C++/CLI や C++ ( DLL ) の Debug を効かせたい。つまりアンマネージ コードのデバッグを有効にしたい。 Please set the debugger type Mixとコンソールにメッセージが出た。 前提:C# のプロジェクトを選択。 1.ソリューション エ…

C++/CLI の基礎 ( デストラクタとファイナライザ )

C++/CLI のオブジェクトは、ガーベージコレクション時に呼ばれるファイナライザにて解放処理を行う。呼び出されるタイミングはガーベージコレクションが判断。 不必要となった時点で明示的に解放すべき場合は、delete 呼び出し時に呼ばれるデストラクタにて…

OpnCV _ C++ _引数の & と const のありなし

型の前の & は参照を示す宣言子。 参照したサイトでは cv::Mat 型だが、他の型も挙動は同じ ? かと。 以下の違い。 cv::Matconst cv::Matcv::Mat&const cv::Mat& 前知識 Memo -- cv::Mat のコピー -- cv::Mat は代入演算子を使うと、浅いコピーが行われコピ…

C#_Task 関連一覧

↑ が投稿日付 new

C#_Task の処理を止める

Task.Run の外から止めたい。中からなら Task.Run(() => { // 処理 ;}); の { } の中で条件分岐をかいて return すればよい。 ・CancellationTokenSource.Cancel( ) を使う方法、・ContinueWith でキャンセル処理を行う方法、・CancellationTokenSource.Canc…

C#_Task を Wait は NG

デッドロックするから。 デッドロック:互いが相手の作業を終わるのを待っていて、どちらも身動きが取れなくなっている状況のこと。 ex ) public void HogeNG( ) { HogeAsyncNG( ).Wait( ); // 対応しない。死ぬ。 } private async Task HogeAsyncNG( ) { aw…

C#_async / await と UI

UIはシングルスレッド。このリソースを内部処理で長時間専用させたくない。 故に非同期メソッドには「まるで同期処理のような書き方で非同期処理を行えて、自然に UI 処理に組み込める」というものが期待された。 よって、 async / await は「非同期メソッド…

C#_戻り値が void と Task の違い

戻り値が void だと await がついた処理がいつ完了するかわからない。 await :Task 完了まで待つ、という意味なので同期的。 await しない場合、「誰かこの仕事実行して」と命令を投げるだけなのでタスク実行中に自分は本来の仕事の続きをこなせる。戻り値 …

C#_非同期メソッド / async / await

非同期メソッド: private async Task<int> Hoge( ) ・async をつけたメソッドのこと。async:非同期、非同期の。・メソッドの中で await を使えるようになる。・戻り値は必ず Task または Task<T> になる。・複数のタスクの実行手順を記述した一つのタスク。作業手</t></int>…

C#_Task とは

Task は非同期処理のことではない。名の通り「仕事、課題、作業の最小単位」。非同期処理における Task はスレッドを意識する必要がない。 ex ) var task = Task.Run(() => { HogeA(); HogeB(); }); 変数 task は「HogeA を実行後 HogeB を実行する、という…

OpenCV_cv::VideoCapture を C++/CLI で使う

C++ cv::VideoCapture cap("./動画ファイル"); cv::Mat mat; cap >> mat; C++/CLI cv::VideoCapture * capX; capX = new cv::VideoCapture("./動画ファイル"); cv::Mat mat; *capX >> mat; しかし、capX をメンバ変数に代入して関数間で使おうとすると例外発…

C++_コンストラクタに引数を渡して初期化

分からずに書いてるので調べた。 Hoge クラスのメンバ変数( 定数 ) _id を 引数 i で初期化。 Hoge::HOge( int i ) : _id ( i ) { メンバが複数ある場合はコンマ , で区切る。 ex ) //Hoge.h const int fuga; //001 //Hoge.cpp Hoge::Hoge( int getId ) { fu…

C#_別スレッドからコントロールを操作 02

続き。↓前のコピペ。 private void buttonTest_Click(object sender, EventArgs e) { // 別スレッドで動かす Task.Run( ( ) => { for (int i = 0; i < 1001; i++) { Hoge(i); } }); } delegate void HogeDelegate(int i); private void Hoge(int i) { if (la…

C#_別スレッドからコントロールを操作 01

BeginInvoke と EndInvoke でも出来るようだがInvokeRequired の方が安全 ( スレッドセーフ ) らしいし、コードがなんか楽そう。 フォームでスレッドを生成した場合、フォームやコントロールに対して、その生成したスレッドからの操作は動作が保証されない。…

C#_Paint と Refresh のメモ

pictureBox.Paint イベントに、pictureBox.Refresh(); を書いたら常に Paint が呼ばれるようになった。何故。 Paint イベントは、コントロールが再描画されると発生。Refresh メソッドは再描画なのでループしていることになる。と思う。 Memo マウスドラッグ…

C#_Paint のタイミングメモ

図形CSV (x, y, w, h のデータ) を読み込み pictureBox に表示した画像に図形を描きたかったが、意外と時間がかかった。 結論から。Paint イベントに書く。 ※ Paint イベントをデザインのプロパティから済。 private void pictureBox_Paint(object sender, P…

C#_デリゲートで非同期呼び出しメモ

別スレッドからのコントロール操作は InvokeRequired を使う以外に、BeginInvoke・EndInvoke を使用する方法もあるが、Task があるので書かれないコードのもよう。だが、一応書き留めておく。 Task クラスが導入されて以降、BeginInvoke を使った非同期処理…

C#_Form やコントロールの更新

Invoke を使ったソースメモ。 経緯 以下のコードは最後の 1000 が表示されるのみ。1 ~ 順次表示されない。 理由は、for ループはメインスレッドを占領しているから。 画面描画もメインスレッドなので、スレッドが占領されている間は画面更新ができない。 fo…

C#_3 桁区切りの文字列に変換

{0:#,0} を使う。 # :桁プレースホルダ 0 :ゼロ・プレースホルダ , :カスタム書式指定子。 3 桁区切りを指定している。 単独では使えず、これらのプレースホルダの間に指定して使う。 桁プレースホルダ は、数字を表示するか何も表示しないことを指定。ゼ…

C++/CLI_ ^ と % と *

ハンドル型とハンドル演算子とアドレス演算子 C++/CLI ^ :ハンドル型 値型の変数はオブジェクトと一体。値型:オブジェクトそのものを表わす。 参照型の変数はオブジェクトと独立。参照型:オブジェクトへの参照を表わす。 C++ の変数は通常、全てオブジェ…

C++/CLI_ハンドルについて

概要 インスタンスを gcnew 演算子によって生成すると、演算子はポインタではなくハンドルを返す。 ハンドルとは共通言語ランタイムによって管理されているオブジェクトを表し、基本的な考え方はポインタと同じだが、ポインタのようなアドレスの演算は行えな…

C++_ファイル出力のメモ

書き込み std::ofstream ofs("./ファイル名"); ファイルがなければ作成。既存のファイル内容は開いた時点で破棄され、上書きになる。※ifstream は指定したファイルが無ければエラーとなる。 --Memo-- 適当に拡張子を付けて ( .hoge ) 上書きテストしたら、「…

Visual Studio_スクロールバー の変更履歴をリセット

変更して保存していくとスクロールバーが緑になっていく。緑の箇所を目安にしている時があるので、多くなると不便故に調べた。 ↓ をやらずとも、ファイルを閉じて開けば緑消える。(追記) メニューバー の [ ツール ] → [ オプション ] 左メニューの [ テキス…

C++/CLI_宣言のアスタリスク * と ハット ^

分からなくなった。 * ポインタ型 C++ では、new でインスタンスを作成し、アスタリスク * がついたポインタ変数に格納。ポインタが格納。 ^ ハンドル型 C++/CLI ではインスタンスを「gcnew」で作成し、ハット ^ がついたハンドル変数に格納。 これによりガ…

値型と参照型のメモ

色々忘れていたので復習。 Java サイトから参照。メモリの使い方は他言語でも大体同じだと思うので。違うかも。 ex ) int i = 4 int j = i; i = 5; // j の数値は、4 となる。 仮に参照型の場合、 j は 5 となる。int は値型。 コピーとメモリ領域 コピーに…

ガベージコレクションとは

勝手に解放してくれる、としか覚えてなかった。 プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能。 ヒープを利用する際、用済みになったデータ領域の解放を忘れて、メモリ上に「ごみ」 ( いつまでたっても解放されない…

オーバーライド とは

C++ でも C# でも Java でも同じ書き方・制約だと思ってる。 が、違うところあった。書く時にまた調べる。↓ は Java サイトから。 親クラス ( スーパークラス ) で定義されているスメソッドを子クラス ( サブクラス ) で再定義すること。 これにより、親クラ…

オーバーロード とは

C++ でも C# でも Java でも同じ書き方・制約だと思ってる。 同一クラス内のメソッド名が同一で、「引数の型・数・並び順」が異なるメソッドを複数定義すること。 「戻り型・アクセスレベル・引数名・throws節」が不一致の場合はオーバーロードと見なされず…

C#_List のメモというより参照型のメモ

new で実体を生成する。new で実体と矢印が出来る? List<T> test; test の中には、実体がある場所を指し示す矢印的なもの ( 参照 ) が入っている。これだけだと、T 型の List ができますよと宣言しているだけ。 List<hoge> test = new List<hoge>(); test.Add(fuga); new </hoge></hoge></t>…