スポンサーサイト

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

WPFでDXlibをつかう

WPFでDXライブラリを使ってみたのでメモ



まずD3DImageを使う方法が有名かつこっちのほうが速いと思うので紹介

WPF + DxLib (C#)

ですが今回はFormの時みたいなやり方がしたかったのでこれとは別の方法でやってみます


まず、結局Formを呼び出せばいいのでwindowに
xmlns:Forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
を追加してコントロールを持ったWindowsFormsHostを作ります

(XML表示できないのでxmpして無理やり表示してるのでそれは各自頑張って解釈よろ
<br /><WindowsFormsHost Grid.Column="1" x:Name="dxwindow" SizeChanged="dxwindow_SizeChanged"><br /><Forms:Control Dock="Fill" MouseClick="Control_MouseClick"><br /></Forms:Control><br /></WindowsFormsHost><br />

あとはappで


//フォーム生成
win = new MainWindow();
win.Show();
//
DX.SetUserWindow(win.dxwindow.Child.Handle);//描画先をに設定
DX.SetUseDirectInputFlag(DX.FALSE);// DirectInput初期化を行わない
DX.DxLib_Init(); //初期化
DX.SetWindowSize((int)win.dxwindow.Child.Width, (int)win.dxwindow.Child.Height);
//場合によって
DX.SetDrawMode(DX.DX_DRAWMODE_BILINEAR);
DX.SetUseZBuffer3D(DX.TRUE);
DX.SetWriteZBuffer3D(DX.TRUE);
DX.MV1SetLoadModelUsePhysicsMode(DX.DX_LOADMODEL_PHYSICS_REALTIME);
DX.MakeKeyInput(1, 0, 0, 0);


これでできます

つぎにDXlibでwpfの画像を扱う方法

これで描画処理をするのはお勧めできませんが3D描画して画像を作ってあとはWPF側で動かしたり何なりしたいときに使える
hoge.pngを読み込んでWriteableBitmapを作ってdxlibの画像にして描画してbmpSourceにします


WriteableBitmap bitmap = new WriteableBitmap(new FormatConvertedBitmap(BitmapDecoder.Create(new FileStream(hoge.png"", FileMode.Open), BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.Default).Frames[0], PixelFormats.Bgra24, null, 0));

int drawableFlag = DX.GetDrawValidGraphCreateFlag();
DX.SetDrawValidGraphCreateFlag(DX.TRUE);

bitmap.Lock();
int dximage = DX.CreateGraph(bitmap.PixelWidth, bitmap.PixelHeigh, bitmap.BackBufferStride, (void*)bitmap.BackBuffer);
bitmap.Unlock();

DX.SetDrawValidGraphCreateFlag(drawableFlag);
DX.SetDrawScreen(dximage);

//なんか色々画像に描画する

int pitch;
void* data;
GraphLock(dximage, &pitch, &data);
BitmapSource bmpSource = BitmapSource.Create(bitmap.PixelWidth, bitmap.PixelHeigh, 96, 96, System.Windows.Media.PixelFormats.Bgr32, null, (IntPtr)data, pitch * bitmap.PixelHeigh, pitch);
GraphUnLock(docDxG);


line
line

comment

管理者にだけ表示を許可する

line
line

FC2Ad

line
俺様

}{A3}{

Author:}{A3}{
大阪に生息中の
同学年28人の来年また1年生
主にPSPで遊んでたり
プログラム書いてたり
そんな東方厨です
最近ARやらVRにハマってる
東方持遊創
PSPRスキン
PSPカスタムテーマ
その他有象無象作ってます
メアド用のコピー
メールはお気軽に
スカイプ名 h-a3-h
もしくは下のついったーで

line
ついたあ
    フォローするボタンのコピー
    line
    初めて人は読んでね☆
    line
    コメント
    line
    かてごりー
    line
    何人きたかな?
    line
    みてるかず
    line
    リンク
    line
    ブログ内検索
    line
    sub_line
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。