请教一个关于CRect旋转的问题

koji003 2011-03-31 09:12:40
知道一个CRect rect1
rect1.left = 100;
rect1.top = 100;
rect1.bottom = 200;
rect1.right = 300;

rect1是一个长方形,我现在想把这个rect1旋转45度,不知道该如何实现?请教一下各位高手
...全文
875 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩南_哥 2011-03-31
  • 打赏
  • 举报
回复
http://www.cnblogs.com/del/archive/2008/06/03/1212534.html
lz可以看看这个 虽然是Delphi的不过 用的函数都是API函数
ggff1974 2011-03-31
  • 打赏
  • 举报
回复
要先确定旋转围绕的中心点,然后再做运算。3楼的说的对。从图形变换来说,就是先平移,再做旋转
ccccj 2011-03-31
  • 打赏
  • 举报
回复
cosa,-sina
sina,cosa
csnd格式居然无法排版。。。。a是R^2任意角度。。。
ccccj 2011-03-31
  • 打赏
  • 举报
回复
乘以矩阵 cosa,-sina
sina,cosa
koji003 2011-03-31
  • 打赏
  • 举报
回复
。。。还是没转出来。。。郁闷
你妹的特盗不 2011-03-31
  • 打赏
  • 举报
回复
用gdi+ 画

VOID Example_Rotate(HDC hdc)
{
Graphics graphics(hdc);
Pen pen(Color(255, 0, 0, 255));

Matrix matrix;
matrix.Translate(40.0f, 0.0f); // first a translation
matrix.Rotate(30.0f, MatrixOrderAppend); // then a rotation

graphics.SetTransform(&matrix);
graphics.DrawEllipse(&pen, 0, 0, 100, 50);
}
msdn example code
j8daxue 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 j8daxue 的回复:]
C/C++ code

void RotatePoint(pointx& pt,const pointx& ptCenter,float angle,BOOL bClockDir)
{
float _x = pt.x;
float _y = pt.y;

if(!bClockDir)
angle = 360 - ang……
[/Quote]
代码有点不对。旋转的话就不一定是矩形了,得自己定义结构取得旋转后4个顶点坐标
j8daxue 2011-03-31
  • 打赏
  • 举报
回复 1

void RotatePoint(pointx& pt,const pointx& ptCenter,float angle,BOOL bClockDir)
{
float _x = pt.x;
float _y = pt.y;

if(!bClockDir)
angle = 360 - angle;

float sin_t = sin(angle);
float cos_t = cos(angle);

pt.x = (_x - ptCenter.x) * cos_t + (_y - ptCenter.y) * sin_t + ptCenter.x;
pt.y = (_y - ptCenter.y) * cos_t - (_x - ptCenter.x) * sin_t + ptCenter.y;
}
CRect RotateRect(CRect& rc,const pointx& ptCenter,float angle,BOOL bClockDir)
{
RotatePoint(rc.TopLeft,ptCenter,angle,bClockDir);
RotatePoint(rc.BottomRight,ptCenter,angle,bClockDir);
return rc;
}

简单点可以使用GDI+的RotateTransform后再恢复
雪岢奇 2011-03-31
  • 打赏
  • 举报
回复
你可以先假设旋转角度为A,然后用数学计算计算出该情况下矩形的各个点位置,接着就封装为函数参数 就为
输入的角度。(如果只是简单的计算一次那么就直接计算出就行了)。
副组长 2011-03-31
  • 打赏
  • 举报
回复
以中心为原点,所有坐标x、y围绕原点转。二维旋转,图形学上有公式。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧