前提
bmp画像を回転させたい
実現したいこと
ボタンを押して実行した際に、左側の画像を45度回転させた状態のものを
右側に出力させたいです
この課題をするにあたって、三角関数とかラジアンも合わせて学習している(過去に学校とかでやった記憶がない)ので、それらをちゃんとできているのかが不安ではありますが、どなたかアドバイス等頂けると幸いです。
現在、デバッグ実行しても右側は回転することなく、左画像をそのまま出力しているので回転処理ができていないんじゃないかなと思っていますが、原因はわかりません
該当のソースコード
//画像を+45度回転させたい
int btnid = MessageBox("ボタンが押されました。", "確認", MB_OK | MB_ICONINFORMATION);
int Width = m_img_left.GetWidth(); int height = m_img_left.GetHeight(); int x; int y; for(x = 0; (x < Width); x++) { for(y = 0; (y < height); y++) { COLORREF ret = m_img_left.GetPixel(x,y); int r = GetRValue(ret); int g = GetGValue(ret); int b = GetBValue(ret); //画像の中心の座標を求める int src_x = Width / 2; int src_y = height / 2; //回転後の座標を計算する? int rot_x = (int)(src_x * cos(45 * M_PI / 180) - src_y * sin(45 * M_PI / 180)); int rot_y = (int)(src_x * sin(45 * M_PI / 180) + src_y * cos(45 * M_PI / 180)); m_img_right.SetPixel(rot_x,rot_y,ret); } } Invalidate(); // 再描画
補足情報(FW/ツールのバージョンなど)
visual studio 2012
言語C++
回答2件
あなたの回答
tips
プレビュー