Skip to content
2013/05/12 / Azulean

unsigned short型配列からBitmapを作る

ありふれたネタかもしれませんが、コミュニティでそれらしい質問が上がっていたのでざっと書いてみました。

http://wp.me/a19AcI-5U
(Visual Studio 2010 / .NET 4 プロジェクト)

鍵となるのは Bitmap クラス、BitmapData クラスです。(WriteUInt16ToIndexed8Bitmap や WriteUInt16ToRgb24Bitmap あたり)
Bitmap クラスをサイズ・ピクセルフォーマットを指定してインスタンスを生成し、そのインスタンスの LockBits メソッドで書き込み先のメモリを用意します。
このメモリに必要な変換を書けたデータを 1 bytes / pixel や 3 bytes / pixel で Marshal.Copy や unsafe のポインタで書き込んで、UnlockBits メソッドで閉じるだけ。

ただし、Format8bppIndexed の場合はカラーパレットの設定も必要なのでお忘れなく。

※上記サンプルを .NET 3.5 以前で実行する場合、currentPointer 変数周りでコンパイルエラーになりますので、一旦 long 型にキャストして足し算してから、IntPtr 型にキャストし直してください。(currentPointer = (IntPtr)((long)currentPointer + stride); みたいな形)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。