文档如何保存为多种格式

时间:2021-03-05 05:41:13
小弟想模仿windows系统自带的画图工具,保存位图图片的时候可以选择 "单色位图(*.bmp)"、"16色位图(*.bmp)"、"256色位图(*.bmp)"...,后缀名一样,图片格式又不一样的。而点击菜单栏里"打开"又只能选择 "位图文件(*.bmp)",不分图片格式的。

要如何实现呢,用多个文档模板?可是我只用一个文档模板就实现了所有功能(包括图片读取保存复制粘贴等等),只是保存的时候图片位数不一样罢了。重写"新建""打开""保存""另存为"命令的实现吗,好像有点麻烦,点保存的时候如何知道已经保存过了而不用再选择保存路径,未保存过的如何知道选择了哪种位数的保存方式。有这方面的例子吗,先说声谢谢了。

9 个解决方案

#1


都是同一个格式的,不用使用多个模板,一个就够了,使用的时候可以根据BITMAPINFOHEDER信息来判断具体位数

点击"打开"的时候将路径保存,保存的时候根据当前保存的路径直接写

保存的时候你不用管是多少位的,反正都是BMP格式的,你写文件头的时候就已经写入是多少位的了

#2


没太明白你的意思哈,按我理解的
struct MYBMPINFO
{
  MyBitmap * pBmp;//你的图片类型
  int iType;   //本图片的保存模式,有默认值,如果选择了则改成相应值
  bool bIsSaved; //是否保存过...
}

也可以归到你图片类中

#3


BITMAPINFOHEADER 结构的biBitCount (每像素所
占bit 数) 成员来区别,biBitCount 为1 (黑白二色图) 、4 (16 色图) 、8 (256 色图) 时由颜色表项数
指出颜色表大小,biBitCount 为16 (16 位色图) 、24 (真彩色图) 、32 (32 位色图) 时没有颜色表

#4


事实上文件就是某一种格式的,当保存为另外的格式的时候,进行相应的转换就可以了

比如一个16位位图,保存的时候选择了单色位图,那么先对图像进行灰度图像转化后保存即可

#5


关于图像转换,可以搜索一下相关资料,以有很多源码、算法可以参考

#6


使用GetSaveFileName,那么ofn.nFilterIndex可以只是你保存文件的详细类型,俺的程序里面使用.doc或者.rtf,ofn.nFilterIndex应该是1或者2.

#7


只要知道不同后缀名的相应文件格式,保存的时候按那个格式转换一下就行了

#8


MS楼主只是想知道如何使用保存对话框。看看MSDN就可了。新建,保存,打开的重写就和你添加一个菜单的响应一样啊。

#9


问题解决了,重写"新建""打开""保存""另存为"命令 是有点麻烦,好在这部分代码mfc是有公开的,Microsoft Visual Studio 6\VC98\MFC\SRC下的DOCMGR.CPP等等,修改下就是了。

#1


都是同一个格式的,不用使用多个模板,一个就够了,使用的时候可以根据BITMAPINFOHEDER信息来判断具体位数

点击"打开"的时候将路径保存,保存的时候根据当前保存的路径直接写

保存的时候你不用管是多少位的,反正都是BMP格式的,你写文件头的时候就已经写入是多少位的了

#2


没太明白你的意思哈,按我理解的
struct MYBMPINFO
{
  MyBitmap * pBmp;//你的图片类型
  int iType;   //本图片的保存模式,有默认值,如果选择了则改成相应值
  bool bIsSaved; //是否保存过...
}

也可以归到你图片类中

#3


BITMAPINFOHEADER 结构的biBitCount (每像素所
占bit 数) 成员来区别,biBitCount 为1 (黑白二色图) 、4 (16 色图) 、8 (256 色图) 时由颜色表项数
指出颜色表大小,biBitCount 为16 (16 位色图) 、24 (真彩色图) 、32 (32 位色图) 时没有颜色表

#4


事实上文件就是某一种格式的,当保存为另外的格式的时候,进行相应的转换就可以了

比如一个16位位图,保存的时候选择了单色位图,那么先对图像进行灰度图像转化后保存即可

#5


关于图像转换,可以搜索一下相关资料,以有很多源码、算法可以参考

#6


使用GetSaveFileName,那么ofn.nFilterIndex可以只是你保存文件的详细类型,俺的程序里面使用.doc或者.rtf,ofn.nFilterIndex应该是1或者2.

#7


只要知道不同后缀名的相应文件格式,保存的时候按那个格式转换一下就行了

#8


MS楼主只是想知道如何使用保存对话框。看看MSDN就可了。新建,保存,打开的重写就和你添加一个菜单的响应一样啊。

#9


问题解决了,重写"新建""打开""保存""另存为"命令 是有点麻烦,好在这部分代码mfc是有公开的,Microsoft Visual Studio 6\VC98\MFC\SRC下的DOCMGR.CPP等等,修改下就是了。