MFC如何对所画几何图形进行旋转、填充、放缩?(急用)【已实现了简单的画图功能、】
MFC怎么对所画几何图形进行旋转、填充、放缩???(急用)【已实现了简单的画图功能、】

急求。初学者,有视频或代码更好,应该添加什么函数?怎么定义选定图形边框?
------解决思路----------------------
用GDI+吧!函数比较全
------解决思路----------------------
如果只进行简单的旋转、填充、缩放可以自己写算法。
要想更复杂的 还是看看GDI的函数吧
------解决思路----------------------
我实现过类似WORD中画图的效果,支持旋转,用的GDI,没有用到GDI+,因此旋转后绘制斜边会有些锯齿。

为了支持旋转功能,代码会增加很多。我的大体思路是,对鼠标进行击中测试,如果鼠标在选中矩形的旋转控制点内,就开始计算鼠标移动的位置和旋转控制点绕矩形中心点旋转的角度(会用到一些平面几何的知识),然后用SetWorldTransform( ),旋转坐标系,绘制出旋转后的矩形,用虚线表示。绘制完后,恢复坐标系。鼠标弹起的时候,显示旋转后的矩形。难点在计算旋转角度,和浮点运算导致的计算误差,否则程序很容易崩溃。
------解决思路----------------------
我说话的时候呢,
你要好好听,
好好体会
不是每个人都有这个机会的
首先、你要对你的图设计一个好用的数据结构,用链表来保存所有的元素和特征。比如
typedef struct tagXXX
{
int type; //类型,表示圆,线等等
int x1,x2,y1,y2;//包含的外矩坐标等
int color; //线型,颜色等等等等
double an; //旋转角度等等
。。。。。。。
}XXX;
其次,你画图不是点一个画一个,而是把整个链表的元素通通画完。
再次,你要对填充的区域设计另一个合适的数据结构
你的画图的代码应该这样描述
{
取得鼠标信息。
根据信息对链表进行相应的增加,删除,修改等动作
通知窗口重绘
}
------解决思路----------------------
进行简单的旋转,偏移,手写吧
急求。初学者,有视频或代码更好,应该添加什么函数?怎么定义选定图形边框?
------解决思路----------------------
用GDI+吧!函数比较全
------解决思路----------------------
如果只进行简单的旋转、填充、缩放可以自己写算法。
要想更复杂的 还是看看GDI的函数吧
------解决思路----------------------
我实现过类似WORD中画图的效果,支持旋转,用的GDI,没有用到GDI+,因此旋转后绘制斜边会有些锯齿。
为了支持旋转功能,代码会增加很多。我的大体思路是,对鼠标进行击中测试,如果鼠标在选中矩形的旋转控制点内,就开始计算鼠标移动的位置和旋转控制点绕矩形中心点旋转的角度(会用到一些平面几何的知识),然后用SetWorldTransform( ),旋转坐标系,绘制出旋转后的矩形,用虚线表示。绘制完后,恢复坐标系。鼠标弹起的时候,显示旋转后的矩形。难点在计算旋转角度,和浮点运算导致的计算误差,否则程序很容易崩溃。
------解决思路----------------------
我说话的时候呢,
你要好好听,
好好体会
不是每个人都有这个机会的
首先、你要对你的图设计一个好用的数据结构,用链表来保存所有的元素和特征。比如
typedef struct tagXXX
{
int type; //类型,表示圆,线等等
int x1,x2,y1,y2;//包含的外矩坐标等
int color; //线型,颜色等等等等
double an; //旋转角度等等
。。。。。。。
}XXX;
其次,你画图不是点一个画一个,而是把整个链表的元素通通画完。
再次,你要对填充的区域设计另一个合适的数据结构
你的画图的代码应该这样描述
{
取得鼠标信息。
根据信息对链表进行相应的增加,删除,修改等动作
通知窗口重绘
}
------解决思路----------------------
进行简单的旋转,偏移,手写吧