なんとなく

なんとなく書きます

WriteableBitmapの保存方法その2

bitmapのヘッダー情報を自分で作り出して保存する方法。
自分の環境ではBmpBitmapEncoderを使う方法よりも早くできた。
かかる時間はだいたいの場合半分以下。

8bitのグレースケール専用になっている。
構造体の初期化や画像のサイズはカラー時には変更する必要あり。

続きを読む

WriteableBitmapの保存方法

ストリームを作成し、xxxBitmapEncoderを使う。
xxxは保存したい画像のファイル形式によって違う。

基本的なコードは以下。
xxxを保存した形式に変化させる。
使えるのは、Bmp,Jpeg,Png,Tiff,Gifがある。
圧縮率とかを変えたい場合は、encoderのどっかをいじればいい。

public void SaveImage(WriteableBitmap bitmap, string fileName)
{
   using(FileStream stream = new FileStream(fileName,
                                        FileMode.Create,FileAccess.Write))
   {
      xxxBitmapEncoder encoder = new xxxBitmapEncoder();
      encoder.Frames.Add(BitmapFrame.Create(bitmap));
      encoder.Save(stream);
   }
}

BMPの場合は以下

public void SaveImage(WriteableBitmap bitmap, string fileName)
{
   using(FileStream stream = new FileStream(fileName,
                                        FileMode.Create,FileAccess.Write))
   {
      BmpBitmapEncoder encoder = new BmpBitmapEncoder();
      encoder.Frames.Add(BitmapFrame.Create(bitmap));
      encoder.Save(stream);
   }
}

ピント

画像のピントについて


距離を変化させてコントラストのピークがピントの合っている場所になるとのこと。

コントラストについて
画像の最も明るい画素と最も暗い画素の輝度の差


参考URL(wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%88%E3%83%A9%E3%82%B9%E3%83%88

参考URL
http://www.mitutoyo.co.jp/products/gazoukogaku/menu/gazosokuteikiso.pdf

ドラッグ&ドロップ

overrideでの書き方。

protected override void OnDragEnter(DragEventArgs drgevent)
{
drgevent.Effect = DragDropEffects.All;
base.OnDragEnter(drgevent);
}

protected override void OnDragDrop(DragEventArgs drgevent)
{
string fileNames = (string)drgevent.Data.GetData(DataFormats.FileDrop , false);

foreach (string str in fileNames)
{
       //strに放り込まれた文字列の処理をここに書く。
}


base.OnDragDrop(drgevent);
}

スレッドが終わっているかの確認方法について

まずは、スレッドの作成

CWinthread* thread = AfxBeginThread( DoThread , NULL);

まずは、スレッドの終了の確認部分

//スレッドの状態の箱
DWORD threadInfo;

while(1){
//この関数でスレッドの状態の値をとる
::GetExitCodeThread( thread->m_hThread , &threadInfo);
//STILL_ACTIVEの値のときはスレッドが継続中
if(threadInfo != STILL_ACTIVE){
//thread が終わっていることを確認して削除。
    m_hThraed->ExitInstance();
delete thread;
thread= NULL;
break;
}
Sleep(100);
}

devcon

devcon.exeの使い方。

コマンドプロンクトでexeの場所まで行き
devcon コマンド
で実行。

とりあえず接続されているデバイスの一覧をファイルに出力するには、
devcon find * > deveiceinfo.txt

USBや仮想COMポート(FTDIBUS)に繋がっている(?)ものだけを取得する場合は、
devcon status @FTDIBUS*> deveiceinfo.txt
devcon status @usb* > deveiceinfo.txt


その他のコマンドの解説はマイクロソフトのページへ。
http://support.microsoft.com/kb/311272/ja


・プログラムに組み込む場合は、
C#だとexeの外部起動がうまくいかなかったので、
バッチファイルからdevconを動かして
バイス情報のファイルを作成して
そのファイルを解析すればOK。

コマンドプロンクトの出力をファイルに保存する

コマンド > ファイル名

のようにコマンドの後に「>」をつけるだけ。
>の後には半角スペースを忘れないように!