スポンサーサイト

--/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ImageコントロールのBitmapSourceに動的に作成したピクセル配列を表示させる

2013/01/15

無制限なアルファブレンディングを実装するための前準備として調べてみました。

WPFのImageコントロールに自前で用意したピクセル配列を表示させる方法です。


まず、Imageコントロールを用意します。
Nameプロパティを「image1」とする。




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace AlphaBrendingTest
{
///
/// MainWindow.xaml の相互作用ロジック
///

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

// 画像サイズ(任意)
int w = 500;
int h = 300;

// ImageコントロールのSouceとして自前で容易した配列を設定
image1.Source = this.CreateBMPSource(w, h);
}

///
/// BitmapSource作成関数
///

/// 画像幅
/// 画像高さ
/// BitmapSouece
BitmapSource CreateBMPSource(int w, int h)
{
// ピクセルフォーマットを設定
System.Windows.Media.PixelFormat pf = System.Windows.Media.PixelFormats.Pbgra32;

// ストライドを設定(8区切りにするため、余っている部分を補間する系数)
int rawStride = ((int)w * 32 + 7) / 8;

// BitmapSource作成
BitmapSource bmpSource = BitmapSource.Create(w, h, 96, 96, pf, null, GetImageData(w, h) , rawStride);

return bmpSource;
}

///
/// ピクセル配列作成関数
///

/// 画像高さ
/// 画像幅
/// Uint32型のピクセルデータ
UInt32[] GetImageData(int w, int h)
{
// データ確保
UInt32[] imageData = new UInt32[w * h];

// w,hのループを回して画像を作成する
for(int j=0; j {
for(int i=0; i {
byte a = 255;
byte r = 255;
byte g = 0;
byte b = 0;

// a,r,g,bをInt型に変換
imageData[w * j + i] = (0x000000FF & (UInt32)b) | (0x0000FF00 & (UInt32)g << 8) | (0x00FF0000 & (UInt32)r << 16) | (0xFF000000 & (UInt32)a << 24);
}
}

return imageData;
}
}
}



これで好きなように画像処理を行う土台はできました。

コメントの投稿

非公開コメント

advertisement


プロフィール

とりにく

Author:とりにく
ゲーム好きなプログラマーやってます。

使用可能言語:C,C++,C#,WPF,JavaScript,Cuda
使用可能開発環境:VisualStudio2005-2013,Unity,CodeWarrior

リンクフリーです
相互リンクなどはこちら↓までかコメント欄にでもよろしくです。
skymail_tt@yahoo.co.jp

検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。