社区
图形处理/算法
帖子详情
请问如何用cbitmap类在内存里,画一个图形,然后将该图形存成bmp文件
myazhe
2003-09-26 11:07:08
请问如何用cbitmap类在内存里,画一个图形,然后将该图形存成bmp文件
...全文
155
8
打赏
收藏
请问如何用cbitmap类在内存里,画一个图形,然后将该图形存成bmp文件
请问如何用cbitmap类在内存里,画一个图形,然后将该图形存成bmp文件
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shanjicn
2003-09-29
打赏
举报
回复
http://www.vckbase.com/document/viewdoc.asp?id=674
对你也许会有帮助!
bluebohe
2003-09-29
打赏
举报
回复
CBitmap bitmap;
HANDLE h=::LoadImage(0,"f:\\tzg.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
bitmap.Attach(h);
CFile file("F:\\tzg1.bmp",CFile::modeCreate|CFile::modeWrite);
CArchive ar(&file,CArchive::store);
BITMAP size;
bitmap.GetBitmap(&size);
int iHeight=size.bmHeight;
int iWidth=size.bmWidth;
int WIDTHBYTES;
unsigned char * pBitBuf=NULL;
WIDTHBYTES=(iWidth*3+3)/4*4;
pBitBuf=(unsigned char *)malloc(WIDTHBYTES*iHeight);
BITMAPFILEHEADER BitFileHead;
BITMAPINFOHEADER BitInfoHead;
BitInfoHead.biHeight=iHeight;
BitInfoHead.biWidth=iWidth;
BitInfoHead.biSizeImage=WIDTHBYTES*iHeight;
BitInfoHead.biSize = sizeof(BITMAPINFOHEADER);
BitInfoHead.biPlanes = 1;
BitInfoHead.biBitCount = 24;
BitInfoHead.biCompression = BI_RGB;
BitInfoHead.biXPelsPerMeter = 2952; // 75 DPI
BitInfoHead.biYPelsPerMeter = 2952; // 75 DPI
BitInfoHead.biClrUsed = 0;
BitInfoHead.biClrImportant = 0;
BitFileHead.bfType = 'MB'; // Non-portable... sigh
BitFileHead.bfSize = BitInfoHead.biSizeImage+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BitFileHead.bfReserved1 = 0;
BitFileHead.bfReserved2 = 0;
BitFileHead.bfOffBits =sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BITMAPINFO mapinfo;
mapinfo.bmiHeader=BitInfoHead;
// mapinfo.bmiColors
HDC hdc = CreateIC (TEXT("DISPLAY"), NULL, NULL, NULL) ;
::GetDIBits (hdc, (HBITMAP)h,0, iHeight, pBitBuf, &mapinfo, DIB_RGB_COLORS) ;
file.Write(&BitFileHead,sizeof(BITMAPFILEHEADER));
file.Write(&BitInfoHead,sizeof(BITMAPINFOHEADER));
file.Write(pBitBuf,WIDTHBYTES*iHeight);
free(pBitBuf);
ar.Close();
file.Close();
bitmap.DeleteObject();
bluebohe
2003-09-29
打赏
举报
回复
CBitmap bitmap;
HANDLE h=::LoadImage(0,"f:\\abc.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
bitmap.Attach(h);
CFile file("F:\\abc1.bmp",CFile::modeCreate|CFile::modeWrite);
CArchive ar(&file,CArchive::store);
BITMAP size;
bitmap.GetBitmap(&size);
int iHeight=size.bmHeight;
int iWidth=size.bmWidth;
int WIDTHBYTES;
unsigned char * pBitBuf=NULL;
WIDTHBYTES=(iWidth*3+3)/4*4;
pBitBuf=(unsigned char *)malloc(WIDTHBYTES*iHeight);
BITMAPFILEHEADER BitFileHead;
BITMAPINFOHEADER BitInfoHead;
BitInfoHead.biHeight=iHeight;
BitInfoHead.biWidth=iWidth;
BitInfoHead.biSizeImage=WIDTHBYTES*iHeight;
BitInfoHead.biSize = sizeof(BITMAPINFOHEADER);
BitInfoHead.biPlanes = 1;
BitInfoHead.biBitCount = 24;
BitInfoHead.biCompression = BI_RGB;
BitInfoHead.biXPelsPerMeter = 2952; // 75 DPI
BitInfoHead.biYPelsPerMeter = 2952; // 75 DPI
BitInfoHead.biClrUsed = 0;
BitInfoHead.biClrImportant = 0;
BitFileHead.bfType = 'MB'; // Non-portable... sigh
BitFileHead.bfSize = BitInfoHead.biSizeImage+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BitFileHead.bfReserved1 = 0;
BitFileHead.bfReserved2 = 0;
BitFileHead.bfOffBits =sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
BITMAPINFO mapinfo;
mapinfo.bmiHeader=BitInfoHead;
// mapinfo.bmiColors
HDC hdc = CreateIC (TEXT("DISPLAY"), NULL, NULL, NULL) ;
::GetDIBits (hdc, (HBITMAP)h,0, iHeight, pBitBuf, &mapinfo, DIB_RGB_COLORS) ;
file.Write(&BitFileHead,sizeof(BITMAPFILEHEADER));
file.Write(&BitInfoHead,sizeof(BITMAPINFOHEADER));
file.Write(pBitBuf,WIDTHBYTES*iHeight);
free(pBitBuf);
ar.Close();
file.Close();
bitmap.DeleteObject();
flyelf
2003-09-29
打赏
举报
回复
画一个图形比较简单,要保存成bmp文件,就需要了解bmp文件的格式了
孤必有邻
2003-09-29
打赏
举报
回复
这里有个例子,把界面DC中的图像保存到文件,可以参考:
http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=82&show=0
SoftSpider
2003-09-29
打赏
举报
回复
建立一个内存DC (CDC memDC),然后将Bitmap选进DC ,这样可以在DC上画任何东西,然后可以
将这个Bimap存为文件.具体不明白可以再讨论.
apcad
2003-09-28
打赏
举报
回复
http://www.vckbase.com/code/
找找吧,应该有你需要的!
蒋晟
2003-09-28
打赏
举报
回复
Must use a memory DC
Command what is yours
Conquer what is not
vs上使用MFC
图形
化读取
BMP
文件
本教程将详细介绍如何在MFC环境中实现
BMP
图像
文件
的读取,并将其展示在
图形
化界面上。同时,我们将探讨如何扩展此功能,包括进行线性变换、直方图均衡化和规定化等图像处理技术。 首先,我们需要了解
BMP
文件
格式。...
24为真彩色
BMP
文件
的读和写
- 保存图像时,先创建
一个
DIBSection,将
内存
中的图像数据复制到DIBSection,然后使用CFile
类
写入
文件
。 6. **注意事项**: -
BMP
文件
不包含任何压缩信息,所以
文件
较大。如果需要减小
文件
大小,可以考虑转换为...
BMP
文件
的读取程序
在MFC中,我们可以创建
一个
CFile
类
的实例来打开
BMP
文件
,然后使用CFile::Read方法逐块读取
文件
内容。首先,我们需要读取
文件
头以验证
文件
是否为
BMP
格式,常见的
文件
头标识是"BM"(二进制值0x424D)。接着,读取信息...
bmp
图像
文件
的显示
如果我们的
BMP
文件
在程序外部,那么我们需要先将其读入
内存
,然后使用CreateDI
Bitmap
函数创建
一个
新的C
Bitmap
对象。 ```cpp C
Bitmap
bitmap
; H
BITMAP
h
Bitmap
= ::Load
Bitmap
(AfxGetInstanceHandle(), ...
MFC截取窗体图片并保存
BMP
在本文中,我们将深入探讨如何在Visual Studio 2010环境下使用Microsoft Foundation Classes (MFC)库来截取窗体图像并将其保存为
BMP
文件
。
BMP
(
Bitmap
)是一种常见的位图图像
文件
格式,它包含像素颜色信息,不进行...
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章