ビットマップの回転

[戻る]
はな 2002/12/11(水) 11:03:46
ビットマップを回転表示したいのですが、なかなかできません。
CDC::PlgBltというのが使えそうなのですが、
これをどう使っていいのかが分かりません。
サンプルなどがみつからないので、どなたか教えていただけませんか。

VC++ 6.0
Win 2000
MFC

dairygoods 2002/12/11(水) 11:37:58
CDC::PlgBltは、矩形を斜めにずらしたように平行四辺形に変形する
関数ですので、回転とは関係ありませんね。

サンプルを見つけるには、Google等の検索エンジンで
「ビットマップ 回転」と入力し、検索してみてください。

2002/12/11(水) 12:34:31
上下左右反転を90°,180°,270°の回転として見るなら PlgBltでできますよ。
一つめのパラメータ lpPointに4つの頂点のうち3つを適切な順番でわたしてあげればいいだ
けです。

ただ PlgBltは Windows 9x系では動作しなかったと思います。

はな 2002/12/11(水) 13:37:26
[[解決]]
すいません。回転という言葉がおかしかったかもしれません。
とりあえずCDC::PlgBltの使い方は以下のような感じで解決しました。
これを応用すれば大丈夫だと思います。
"dairygoods"さん、"た"さん、どうもありがとうございました。

====================================================
POINT p[3] ;

p[0].x = 0 ;
p[0].y = 200 ;
p[1].x = 0 ;
p[1].y = 100 ;
p[2].x = 10 ;
p[2].y = 200 ;

CDC dcBmp ;
CBitmap msk, bmp, *old ;

CDC* pDC = this->GetDC() ;

bmp.LoadBitmap( IDB_BITMAP ) ;
dcBmp.CreateCompatibleDC( pDC ) ;
old = dcBmp.SelectObject( &bmp ) ;

pDC->PlgBlt( p, &dcBmp, 0, 0, 100, 10, m, 0, 0 ) ;

====================================================

古いスレッドには追加発言できません。