ビットマップの回転について – プログラミング – Home

ビットマップの回転について
 
通知
すべてクリア

ビットマップの回転について


gaki
 gaki
(@gaki)
ゲスト
結合: 20年前
投稿: 2
Topic starter  

初めて投稿させていただきます。
VC初心者なんで初歩的な質問をして申し訳ないのですが、
ビットマップファイルを回転して表示する方法について
ご教授願いたいと思います。

内容はダイアログに貼り付けたのScrollView上の論理座標値を計算して
そのエリア上にフォルダ指定したモノクロビットマップを貼り付けます。
現段階では
① LoadImage()でビットマップのハンドルを取得
② GetObject()でビットマップの情報を取得
③ BITMAPINFOHEADER構造体を作成
④ ビットマップのビット列を取得する
  char* pchArea=(char*)malloc(bmihdr.biSizeImage*sizeof(char));
  nSts=GetDIBits (
pDC->m_hDC, // DC のハンドル,
hBitMap, // DDB 形式のビットマップのハンドル
0L, // 取得する最初の走査行
(DWORD)bmihdr.biHeight, // 取得する走査行の数
pchArea, // ビットマップビット
(LPBITMAPINFO)&bmihdr, // ビットマップデータの構造体
(DWORD)DIB_RGB_COLORS);
⑤ ビットマップを伸縮して貼り付ける
  nSts=StretchDIBits(
pDC->m_hDC,
cRectBmpAreaLP.left,
cRectBmpAreaLP.top,
貼り付け先(View上)の横幅(論理サイズ), 
貼り付け先(View上)の縦幅(論理サイズ), 
0,
0,
bmihdr.biWidth,
bmihdr.biHeight,
pchArea,
(LPBITMAPINFO)&bmihdr,
DIB_RGB_COLORS,
SRCCOPY);
という状況です。
回転していないビットマップならこれで伸縮して貼り付けができているのですが、
回転(必要なのは90°180°270°の3つのみ)して貼り付けることができずに
悩んでいます。

何分初心者なもので、かなり初歩的な質問をしているのかもしれませんが、
どなたかぜひ教えてください。
よろしくお願いいたします。

開発環境はVC5.0、OSはWindows2000です。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

回転させるAPIはありませんので、自力で各点を移動する必要があります。


返信引用
たく
 たく
(@たく)
ゲスト
結合: 21年前
投稿: 29
 

> 回転させるAPIはありません
ですが、GDI+を使えばOKですね


返信引用
作りたがり屋
 作りたがり屋
(@作りたがり屋)
ゲスト
結合: 20年前
投稿: 2
 

ども、作りたがり屋と申します。
論理座標原点と軸の正負を変える関数とかを
つかっちゃえば…って面倒ですかね。。
SetViewportOrgEx()とかSetWindowOrgEx()とか
GetViewportOrgEx()とかGetWindowOrgEx()とかを
使うのって…無理ですかねぇ。。。
(ごめんなさい、試したことはないんですけど
 「いけるんちゃうかな?」って思って投稿しちゃいました)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました