C#

C#

【C#】複素数の計算(Complex構造体)

C#では複素数を扱う Complex構造体(名前空間:System.Numerics)が用意されています。 ただし、プロジェクトの初期状態では、使えないため、プロジェクトの参照を右クリックし、参照の追加で System.Numerics を...
C#

【C#3.0~】自動実装プロパティ

C#3.0(Visual Studio 2008)からは、自動実装プロパティなる物が使えるようになりました。 C#2.0までのプロパティの実装は、こんな感じ↓ class Contrast { private double _scale =...
C#

【C#4.0~】Parallel.Forによる並列処理

C#4.0(Visual Studio 2010)からはParallel.For(名前空間:System.Threading.Tasks)による並列処理が可能となります。 2コアや4コアは当たり前の時代なので、C#のParallel.For...
C#

【C#】24bitと32bitカラー画像の表示速度の比較

カラー画像の24bitカラーと32bitカラーの画像はR,G,Bの成分はそれぞれ8bitで表現され、32bitの時に、残りの8bit部分で画像の透過率として使われる場合もありますが、画像処理的には、あまり使われる事はありません。 そのため、...
C#

【C#3.0~】拡張メソッド

C#3.0(Visual Studio 2008)からは、拡張メソッドよ呼ばれる、既存の型やクラスにメソッドを追加することが出来るようになりました。 と、聞くと、クラスを継承すれば出来るでしょ!という意見があろうかと思いますが、拡張メソッド...
C#

【C#6.0~】文字列補間($を使った文字列書式設定)

C#6.0(Visual Studio 2015)からは$を使った文字列の書式設定を行う事ができます。 C#6.0より前では、String.Format を使って double a = 355; double b = 113; double...
C#

【C#4.0~】引数の省略と名前付き引数

C#4.0(Visual Studio 2010)からは引数の省略および名前付き引数が使えるようになりました。 引数の省略 なにはともあれ、サンプルをご覧ください。 public static double AddScale(double ...
C#

【C#3.0~】varによる暗黙的な型宣言

C#3.0(Visual Studio 2008)からはvarを用いた暗黙的な型宣言を行う事ができます。 例えば、以下のような例 string text = "Sample"; では text の型は = の右辺を見ると 文字列型(stri...
C#

C#2.0(Visual Studio 2005)からの脱却

私が本格的にC#を始めたのはC#2.0(Visual Studio 2005)からなのですが、会社でプログラムをしていると、お客様向けのサンプルプログラムを作成することから、むやみにVisual Studioのバージョンを上げる事もできず、...
C#

画像処理100本ノックをC#でやってみた

画像処理100本ノック というページがあるのをご存じでしょうか? 最近の画像処理と言えば、OpenCVをPythonでやってみた! という情報にあふれているのですが、この画像処理100本ノックでは、画像処理の処理部分はOpenCVに頼らずに...
C#

【C#】画像の輝度値の取得設定速度の比較

C#で画像の輝度値を取得/設定を行う場合は、GetPixel、SetPixelメソッドを使うと遅いのでLockBits~UnlockBitsでポインタをむき出して輝度値の取得/設定を行うのが定番となっていますが、自分自身でGetPixel、...
C#

【C#】ボタンの背景色を元に戻す方法

C#でボタンの背景色を元に戻す方法! とか言って、ボタンのBackColorプロパティをシステムのControlに設定すればいいんでしょ?! と思っていたのですが、実際にボタンの背景色を別の色に設定し、元のシステムのControlに戻してみ...
C#

C#から使うC++ライブラリ(DLL)の作成方法

前回はC#で書かれたライブラリの作成方法でしたが、今回は、C#から使えるC++で書かれたライブラリの作成方法です。 C++と言っても、C++内部でクラスを使う事は可能ですが、C#から直接呼ぶ事が出来るのは、クラスではない関数のみとなります。...
C#

C#ライブラリ(DLL)の作成方法

C#から使う、C#で書かれたライブラリ(*.dll)の作成方法です。 C#から使う、C言語ライブラリの作成方法はこちらを参照ください。 まず、ライブラリを呼び出す側のプロジェクトを作成します。 ここでは、Windowsフォームアプリケーショ...
C#

【C#】文字列の回転描画

文字列を回転して描画するのはGraphicsオブジェクトをワールド変換して描画することも可能ですが、ワールド変換はGraphicsオブジェクト全体の座標系が変換されてしまうため、少々使いづらく感じます。 そこで、文字だけを回転するGraph...
C#

【C#】メモリの値コピー、ポインタ、1次元、2次元、3次元配列間

C#でメモリのポインタ(IntPtr)と一次元配列間の値のコピーにはMarshal.Copyメソッド(名前空間:System.Runtime.InteropServices)を用います。 Marshal.Copyにはポインタから一次元配列へ...