アプリ版:「スタンプのみでお礼する」機能のリリースについて

 CDCのModifyWorldTransformを用いて”年月日時分秒”を指定回転角度で回転して表示したいのですが、80度から表示できません。
 たぶんXFORMの値(eDx,eDy)がおかしいと思うのですが、どなたか教えて下さい。

環境はXP VC++.NETです。(以下ソース抜粋)
------------------------------------------------------------
int OutWith = 210;//指定幅
int OutHige = 320;//指定高さ

int bitcnt = 1;//ドット当たりのビット数...1==>2値データ
int clrused = 1 << mbitcnt;//パレットの個数...2

//カラーパレット
pClrPlt = (RGBQUAD*)new RGBQUAD[miClrUsed];
memset(pClrPlt, 0, isizeCP); //0クリア
//0:白
psetcp = pClrPlt;
psetcp->rgbBlue = 255;
psetcp->rgbRed = 255;
psetcp->rgbGreen = 255;
//1:指定色
psetcp++;
psetcp->rgbRed = (BYTE)(0xaa);
psetcp->rgbGreen = (BYTE)(0x00);
psetcp->rgbBlue = (BYTE)(0xff);

int theta = 80; // 指定回転角度
float PI = (float)3.141592; //パイ
//角度(ラジアン)
float angle = (theta * (float)PI / (float)180);

sint = sin(angle);
cost = cos(angle);

XFORM xf; // XFORM
xf.eM11 = (float)cost; //cost
xf.eM12 = (float)sint; //sint
xf.eM21 = (float)-sint;//-sint
xf.eM22 = (float)cost; //cost

xf.eDx = (float)-(OutWith*1);//★
xf.eDy = (float)-(OutHige*3);//★
mwtmode = MWT_RIGHTMULTIPLY;

::ModifyWorldTransform(CDC, &xf, mwtmode);

------------------------------------------------------------
・実際は幅、高さ、角度、色はユーザ指定ですが、ここでは固定にします。
・CDCはCreateCompatibleDC()し、CreateDIBSection()等で得たCBitmapをSelectObject()で設定しました。
(最終的には2値化したビットマップファイルに書き込みます。)

★角度thetaを変更すると、eDxとeDyも変更が必要なようですが、
計算式などがあるのさえ、わかりません。

***よろしくお願いします。

A 回答 (1件)

ModifyWoldTransformは現在の変換にxfの内容を加えて描画する事になるのですがそういったことがしたいのですよね


単に 直行座標を80度回転させたいだけなのではなくて ・・・
    • good
    • 0
この回答へのお礼

すいません、自己解決しました。

お礼日時:2007/12/04 04:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!