社区
图形处理/算法
帖子详情
在HDC中画好了的图形如何保存?
smallfishff
2005-12-17 01:38:57
已经画好了 现在是用读取HDC中每个像素点的方法保存为Bmp文件.
用什么方法可以直接一次性写入呢?
...全文
214
6
打赏
收藏
在HDC中画好了的图形如何保存?
已经画好了 现在是用读取HDC中每个像素点的方法保存为Bmp文件. 用什么方法可以直接一次性写入呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 画曲线
vc 绘制波形 vc绘图
如何用VC++画波形图?如何设置背景颜色、画刻度线,如何放大缩小,如何将波形图
保存
为
图形
文件
实例_高斯模糊(毛玻璃)特效-易语言
' 说明: 图像_高斯模糊 (, ) 直接出来的xx也有高斯模糊,但是我感觉效果不好所以再次做了些处理 ' 实现流程: ' 1/将图片创建一个内存设备场景(
HDC
) 通过
HDC
创建
图形
,并将xx都载入到位图中 ' 2/位图 作为原始xx,截取模糊矩形范围图片xx画到
图形
上 ' 3/从设备场景(
HDC
)获取到 上一部截取到的图片xx,来做高斯模糊处理 ' 4/销毁之前的设备场景(
HDC
)和
图形
,从新建一个与图片宽高的 内存设备场景绑定
图形
' 5/将原图片画到
图形
上 ' 6/ 设置一下模式,然后创建圆角矩形路径根设置剪辑区 将图片绘画到
图形
上。 ' 7/ 然后就是画2条分割线,最后就是清尾工作了
图形处理/算法
19,467
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章