新規のC#プロジェクトでHALCONを使えるようになるまでの手順

# この記事について

普段、C#で画像処理ライブラリHALCONを使っていますが、久々に新しいC#プロジェクトからアプリを作ることになったので、まっさらのC#プロジェクトからHALCONを使えるようにするまでの手順を残しておきます。

使用している環境は
- Windows 10 Pro 64bit
- VisualStudio 2015
- HALCON 11.0
です



# 1.VisualStudioで新規プロジェクトを作る

まっさらのC#のプロジェクトを作るところから始めます。
VisualStudioを開いて、「新しいプロジェクト」をクリックします。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/dcac852e-d110-ffb6-0053-09e158ae76a5.png)

下図のウィンドウが出てくるので、Visual C#のWindowsフォームアプリケーションを選択し、保存したいフォルダを選択し、プロジェクト名を設定してOKをクリックします。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/4f87d283-ca2e-ba70-d5e1-57e464f3c5e4.png)




# 2. x64プラットフォームの追加

まっさらのプロジェクトではプラットフォームのところがAnyCPUになっています。
ここをx64にしないと次の.NET Frameworkコンポーネントの追加でエラーが出るので、先に設定します。

まずAnyCPUのプルダウンメニューから「構成マネージャー」を選択します。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/95cc9c08-8dfa-3206-dc03-6358d80ab352.png)

次に出てきたウィンドウの「プラットフォーム」→「新規作成」とクリックします。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/3187491c-ce1f-57a3-4de9-fb84495c889f.png)

次に出てきたウィンドウからx64を選択してOKをクリックします。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/c12ae47c-dbf8-4979-a834-35f686e2b7cf.png)

x64を選択します。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/94d28c32-a6ef-c79b-bf35-9abc67fa6706.png)




# 3. HALCONの.NET Frameworkコンポーネントを追加する

画面の左のツールボックスの適当なコントロールを右クリックして「アイテムの選択」をクリックします。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/3ae7c41d-49fd-e2a5-1215-abd951b82a0d.png)

そうすると、下図のようなウィンドウが出てくるので、「参照」をクリックします。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/45a3012c-19f0-b166-07a5-f724bb8c8a6a.png)

そこで下図のフォルダにあるhalcondotnet.dllを選択します。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/44840b23-ae2e-02e4-c8c5-20cc87a4eb5e.png)

> 2019/4/18 追記
> HALCONでは画像サイズが32k*32kを縦横いずれかが超える大きな画像を扱おうとするとエラーが出ます。
> そのような大きな画像を扱いたい場合はHALCON XLというライブラリがあり、ファイル名の末尾にxlのついた、halcondotnetxl.dllをここで選択することで使用できます。

.NET FrameworkコンポーネントのタブにHWindowControlが追加されます。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/bfe13b2e-703e-7595-8ec1-cd76c1ccd2ba.png)





# 4. HWindowControlをフォーム上に貼り付ける

これでツールボックスの中にHWindowControlが追加されているので、これをクリックしてフォーム上にHWindowControlを追加することができます。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/161c48d5-0eee-957d-a909-25a6bb7fe044.png)

HWindowControlを1つフォーム上に追加します。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/f58c4ead-b062-4720-7508-746553e0882f.png)




# 5. 必要なコードを記述する

Halconを使うために名前空間HalconDotNetを追加します。

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/36bd86b8-8fc7-c6c7-e4d9-198cdb856a3c.png)

以上でHALCONが使えるようになりました。

試しに4.でフォーム上に追加したHWindowControlに画像を表示するコードを書いてみます。

```c#
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // HWindowの名前を付ける
            HTuple hWin1;
            hWin1 = hWindowControl1.HalconID;

            // 画像を読み込む
            HObject img;
            Op.ReadImage(out img, @"C:\temp.jpg");

            // HWindowに画像を表示する
            Op.DispImage(img, hWin1);
        }
    }
```

これを実行すると

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/280874/31eace70-1fa6-7c9f-1c52-1a260873eff6.png)


となります。