社区
图形处理/算法
帖子详情
在HDC中画好了的图形如何保存?
smallfishff
2005-12-17 01:38:57
已经画好了 现在是用读取HDC中每个像素点的方法保存为Bmp文件.
用什么方法可以直接一次性写入呢?
...全文
199
6
打赏
收藏
在HDC中画好了的图形如何保存?
已经画好了 现在是用读取HDC中每个像素点的方法保存为Bmp文件. 用什么方法可以直接一次性写入呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caucyniu
2005-12-19
打赏
举报
回复
CDC dc;
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
CBitmap bm;
int Width=Rect_client.Width();//GetSystemMetrics(SM_CXSCREEN);
int Height=Rect_client.Height();//GetSystemMetrics(SM_CYSCREEN);
CRect rect;
this->GetWindowRect(&rect);
int leftvalue=rect.left;//Rect_client.left;
int topvalue=rect.top;//Rect_client.top;
bm.CreateCompatibleBitmap(&dc,Width,Height);
CDC tdc;
tdc.CreateCompatibleDC(&dc);
CBitmap *pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,leftvalue,topvalue,SRCCOPY);
tdc.SelectObject(pOld);
BITMAP btm;
bm.GetBitmap(&btm);
DWORD size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
CString name;
name.Format("Gamut%d.bmp",nCount++);
name=pathname+name;
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData,size);
bf.Close();
}
GlobalFree(lpData);
smallfishff
2005-12-19
打赏
举报
回复
//获得DC中的数据(里面传OBJ_BITMAP就会返回一个图像句柄)
HBITMAP gg;
gg = (HBITMAP)::GetCurrentObject(MemDC, OBJ_BITMAP);
//获得图像信息
BITMAP xx;
GetObject(gg, sizeof(xx), &xx);
//下一步就不知道干什么了
GetBitmapBits.......
烦写一下
yanshine
2005-12-19
打赏
举报
回复
现在没有代码,我把我实现时的方法告诉你吧,如果你没试出来我再给你做做看
GetCurrentObject 获得DC中的数据(里面传OBJ_BITMAP就会返回一个图像句柄)
GetObject 获得图像信息
GetBitmapBits 获得图像数据
CreateFile 来建立文件
WriteFile 来写文件就可以了
想必你应该对图像头怎么写应该很清楚了吧.
angel_rabbit
2005-12-19
打赏
举报
回复
gz
smallfishff
2005-12-19
打赏
举报
回复
我已得到HDC里位图对象了
只是如何写入到文件中
是先写头文件 我已经解决 然后再是怎么写数据?
我用的方法是写了头文件 再循环读取每个像素点的颜色值保存.
xianshiqi
2005-12-17
打赏
举报
回复
得到要保存的客户区,创建兼容位图,创建兼容内存,用文件方式写入
DrawShape(演示GDI绘制各种
图形
、应用画笔-画刷类库)
图形
编程,演示GDI绘制各种
图形
、应用画笔-画刷类库
vc画直线曲线圆椭圆矩形 源码
画图vc 画直线 曲线 圆形 椭圆 矩形,有重绘功能,欢迎下载。
vc 画曲线 vc 画曲线
vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线vc 画曲线
图形
学课程设计 公路上行驶的小车
实现过程中设计的函数如下:画轮条函数Wheel(
HDC
hdc
)目的是画轮条直线,模仿轮子的线条,实现动画。
保存
坐标函数InitWheel(int r) 目的是
保存
轮条旋转的9个点坐标,为实现旋转动画做准备。 转化坐标函数Circle_Points(int x, int y, int color, CDC *pDC)目的是圆心坐标转化,实现画圆。 汽车尾气设置函数gas(int a,int b,int car_r)目的是用画圆动画实现汽车尾气(不是很形象)
vc 绘制波形 vc绘图
如何用VC++画波形图?如何设置背景颜色、画刻度线,如何放大缩小,如何将波形图
保存
为
图形
文件
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章