ゲームについてつらつらと。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MFC Feature Packに使えそうな関数を見つけたので
これをダウンロードしてみる。 ちなみにインストールに必要な空き容量が約4000MB必要。ケタ外れ。 んで、インストールしてちょっと触ってみたんですけど これは便利そうですね。 便利そうだけど新しい機能だから、 ググっても、これを使う為の資料が無い。 日本語版のMSDNも全く更新されない。 既存コードから把握しかないですね。 英語のMSDNを見るという手もあるけど。 PR
当たり判定とかを考える前に
とりあえずクォータービューのマップチップで マップが作れるようなアプリをこしらえよう。 ・・・と思ったので とりあえずペイントアプリのようなレイアウトを作ろうかと いろいろいじってたんですが難解でした。 具体的に言うと CSplitterWndで画面でウインドウを分割したいけど全然上手くいかない。 これもいろんなサイトを回ったので コード自体は間違ってないはずなんですけどねえ〜。 Imageと違ってこのクラス自体評判が悪いしなあ。 ============================================== 【公式のFAQ】 CsplitterWndに関するFAQ George Shepherdと私の共著、「MFC Internals」では章を1つ丸ごとこの問題に割いています。 CSplitterWndには、たくさんの興味深い内部機能、欠点、奇妙な動作などがあって、個人的にはお気に入りのMFCクラスなのです。 【公式のMSDN】 MFC 9.0 でサポートされなくなった MFC 3.0 の eVC クラスの一覧 ・ ・ ・ CSplitterWnd クラス ============================================== 色々ひどいですねえ。 っていうか使えるのか使えないのかもわかんないなあ。 もういいや。
あれからGDI+を使ってみたけど全然駄目ですね。
ソースはこれで間違ってないはずなのになんでだろう。 ・・・と、うなってたら OnPaint関数を手書きで追加していたのが原因でした。 プロパティから追加しないとOnPaintとしての働きは無いのかー。そうかー。 今回は結構調べるのが骨だったのでソースも置いときます。 Imageを使う版とGDI+版。 画像huzimi.pngを ID:IDC_HOKOU、コントロール変数:m_xcHokouのピクチャボックスに貼り付け。 ピクチャボックスの枠の調整はこのコードではImageでのみ有効です。 ------------------------------------------------------------------- //imageを使う場合はインクルードしておく #include "atlimage.h" #include < CString > //GDI+を使う場合こっちをインクルード #include #pragma comment (lib, "Gdiplus.lib") using namespace Gdiplus; void Charadb::OnPaint() { CPaintDC dc(this); // TODO: ここにメッセージ ハンドラ コードを追加します。 // 描画メッセージで CDialog::OnPaint() を呼び出さないでください。 { //AfxMessageBox("実行確認用メッセージ消して良し"); CImage img; img.Load("huzimi.png"); //ピクチャコントロールのデバイスコンテキストを取得 HDC hDC; hDC = m_xcHokou.GetDC()->GetSafeHdc(); //Image=================================================== SetStretchBltMode(hDC,STRETCH_HALFTONE);//StretchBltのモード設定 //画像サイズそのままで貼り付ける場合 //img.BitBlt(hDC,0,0,img.GetWidth(),img.GetHeight(),0,0,SRCCOPY); //サイズ2倍で貼り付ける場合 img.StretchBlt(hDC,0,0,img.GetWidth()*2,img.GetHeight()*2,0,0,img.GetWidth(),img.GetHeight(),SRCCOPY); //ピクチャボックスの枠を画像サイズ@2倍角に合わせて描写(デフォルトの枠は事前にプロパティをいじり消しておく) CPaintDC dc2(GetDlgItem(IDC_HOKOU)); CPen myPen,myPen2; myPen.CreatePen(PS_SOLID, 2, RGB(230, 230, 230));//ペン1 myPen2.CreatePen(PS_SOLID, 2, RGB(100, 100, 100));//ペン2 dc2.MoveTo(0,img.GetHeight()*2);//線を引く始点設定 dc2.SelectObject(&myPen2);//ペンを設定 dc2.LineTo(0,-1);//線を引く dc2.SelectObject(&myPen2); dc2.LineTo(img.GetWidth()*2,0); dc2.SelectObject(&myPen); dc2.LineTo(img.GetWidth()*2,img.GetHeight()*2); dc2.LineTo(0,img.GetHeight()*2); img.Destroy();//Image解放 //GDI===================================================== //GDI+を使う準備 using namespace Gdiplus; GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); //準備終わり Graphics graphics(hDC); //デバイスコンテキスト Bitmap image(L"huzimi.png"); // イメージロード、ファイル名の前の L は忘れない graphics.DrawImage(&image, 0, 0);//イメージ描写 GdiplusShutdown(gdiplusToken);//解放 }
さてとSQLiteの方はなんとか読める程度には翻訳したので
これでデータ格納GUIはバッチシ! 次はダイアログに画像を表示できるようにしよう。 グラフィックのプレビューとかマップエディタには必要ですよね。 そういうわけでMFCでpngが扱えるライブラリを探しましたが ドンピシャなものはあんまり見つかりませんね。 libpngは最新版のインストールに参考になりそうな日本語ページがないし。 OpenCVはOLEエラーで実装できなかったし。 CImageはコードは通るのに画像が表示されないし。 susieは使い方がよくわからない。 さあ次はGDIを試すぞ。←いまここ 明日も頑張ろう。 |
ブログ内検索
カテゴリー
プロフィール
HN:
山田
誕生日:
07/17
趣味:
ゲーム製作
好みのタイプ:
無印ポポロクロイス物語
無印アークザラッド That's QT バハムートラグーン 花と雨と太陽と 砂のエンブレイス デカボイス チュウリップ サテラビュー関連
アーカイブ
メッセ
aonori_hatara
タロット占い
|