我是用做一个3D画图软件 想储存每次画完的文件的话难道要把每个点的三维坐标都储存下来吗?例如我画了一个大圆那怎么一个一个储存它的点的坐标好麻烦不知道怎么实现... 能不能直接把Drawrect之类的一系列命令以文件方式储存下来 下次打开文件直接执行一遍命令就行了 谢谢 如果办法不错且解释详细可以再追加30分~~
我需要用opengl...不能用CMetaFileDC画图...
请问用C或C++(MFC) 储存文件时如何把命令储存下来而不是数据
答案:4 悬赏:0 手机版
解决时间 2021-04-09 03:47
- 提问者网友:感性作祟
- 2021-04-08 15:43
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-04-08 16:34
可以自定义实现文件的数据结构,比如:
ar<<命令段头<
ar<<命令号<<参数1<<参数2<<参数3<
ar<<附加参数块长度<<附加参数<<附加参数块长度<
ar<<命令段尾<
这样效率比较高,也可以完全控制文件内容,推荐!
ar<<命令段头<
这样效率比较高,也可以完全控制文件内容,推荐!
全部回答
- 1楼网友:逃夭
- 2021-04-08 20:20
你可以设计不同的类来实现这些图形的具体画法,每次画的时候,只需调用相应类的方法即可。
再看看别人怎么说的。
- 2楼网友:等灯
- 2021-04-08 18:46
建数据结构
公共底层类,各类图形继承它
class Point3D
{
double x,y,z;
};
class CirCle
{
public:
Point3D o;
double r;
}
class RECT
{
public:
double width,height;
//Point3D 根据构的情况定义
Point3D leftUP,leftDown............
public:
RECT(Point3D leftUP,Point3D leftDown,Point3D anyPoint)
{
//计算其它各点
}
};
绘图时读取这些结构和类中数据重绘。
做项目的话肯定要用我的方法。
要是做个玩具的话那就用MetaFile吧
猪头。。。。。。。
- 3楼网友:行雁书
- 2021-04-08 17:09
用CMetaFileDC类吧:
CMetaFileDC:一个Windows源文件包含了一系列的图形设备接口的命令,你可以用来重放或创建一个想要的图形或文本。
CDC::PlayMetaFile();播放源文件(在当前窗口输出)
CMetaFileDC::Create();再次准备源文件设备上下文
CDC::PlayMetaFile();在新的源文件DC中绘制
BOOL DeleteMetaFile();删除源文件(参数为句柄)
HMETAFILE CopyMetaFile();拷贝windows格式源文件到指定的文件。
用这种方法保存的不是数据,而是命令。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯