ゲスト[ログイン]

おおいしゆうのASミュージックスコア登録CGI

おおいしゆうが日々のフォルテール演奏の記録を書き続けるCGI(日記じゃないです。blogでもないです)

工画堂スタジオ 『スマイル☆シューター ~ふぁーすと☆ちけっと~』OHP

パルフェ10周年ポータル パルフェ10周年寄せ書き企画

Aozora Melodyのパーフェクト動画公開中!

日 (今日 最終日)
日 ~ 日 (全部)
フォルテール総合情報サイト
ASミュージック
ポータル

同曲演奏状況
CSV登録
工画堂スタジオ&ヤマサ 『スマイル☆シューター ~ふぁーすと☆ちけっと~』応援中!
工画堂スタジオ 『ソルフェージュ~La finale~』OHP
曲名スコア記録曲名スコア記録
天使の歌う小夜曲66657(96.52%)普通69063羽根のブランケットにつつまれて62573(98.11%)63776
Angelic Magic84201(93.02%)普通89319ハレルヤ彗星群100957(91.94%)普通106612
街へ38675(93.45%)普通41384
日曜ですがプログラミングをしていました。Windowsでメモリに読み込まれたデータをもとにPNGを表示しようと思っていたのですが、GDI+とIStreamというのを使えば出来るようです。PNGだけでなく普通のBMPやJPGなんかも出来ます。かなり遅い気がしますが。

LPSTREAM pstream;
HGLOBAL hGlobal=GlobalAlloc(GHND,PNGデータのサイズ);
LPVOID p=GlobalLock(hGlobal);
memcpy_s(p,PNGデータが入ったバッファ,PNGデータのサイズ); //最初からpに展開してもOK
GlobalUnlock(hGlobal);
HRESULT res=CreateStreamOnHGlobal(hGlobal,TRUE,&pstream);
if(res!=S_OK){return FALSE;};
pImg=Image::FromStream(pstream);
f(pImg->GetLastStatus()!=Ok){delete pImg;return FALSE;};
pstream->Release();

こんな感じで読み込めます。ファイルからの場合は直接
pImg=Image::FromFile(ファイル名);
で出来ます。コンストラクタを使って
Image img(ファイル名);
Image img(pstream);
とかでもいいです。

使う時は
Graphics g(hDC);
g.DrawImage(pImg,x,y,width,height);
みたいな感じで。

PNGの一部((x,y)から幅cx,高さcy分)を切り出して表示したい時は、
Rect dst;dst.X=表示先のx座標;dst.Y=表示先のY座標;dst.Width=幅;dst.Height=高さ;
としておいて
g.DrawImage(pImg,(const Rect&)dst,(INT)x,(INT)y,(INT)幅,(INT)高さ,(Unit)UnitPixel);
とします。キャスト無いとオーバーロードがたくさんありすぎてコンパイラが誤動作するかも知れないので全部書いておきました。dstの幅と高さを変えれば拡大縮小も出来ます。UnitPixelというのはenum型なのでそのままUnitPixelと書きましょう。ちなみに2のようです。

Rect型はX,Y,Width,Heightで、RECT型はleft,top,right,bottomなのを間違えていてずっと変な感じに拡大されておかしいと悩んでいたのは内緒です(爆)

オンラインマニュアルが.net frameworkのものしかなくて苦労しました…
今更MFC使ってる方が悪いといえば悪いのですが(爆)


フォルテールはちょっと低めですがクリア。街はけっこう手間取りましたが他はすぐに出ました。
名前: ひとこと:
この記事へのトラックバックURL: https://www.asmusic.jp/ASHARD/score/tb.cgi/yu-oishi/20080629手動トラックバック