社区
图形处理/算法
帖子详情
在HDC中画好了的图形如何保存?
smallfishff
2005-12-17 01:38:57
已经画好了 现在是用读取HDC中每个像素点的方法保存为Bmp文件.
用什么方法可以直接一次性写入呢?
...全文
197
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
打赏
举报
回复
得到要保存的客户区,创建兼容位图,创建兼容内存,用文件方式写入
易语言源码易语言判断
HDC
源码.rar
3. 选择对象:如选择画刷、画笔、字体等
图形
对象到
HDC
中,通常使用`SelectObject()`函数。 4. 绘图操作:如`MoveToEx()`, `LineTo()`, `FillRect()`等函数,用于在
HDC
上进行各种
图形
绘制。 5.
HDC
的释放:操作完成后...
根据鼠标移动在屏幕上画线
在计算机编程中,特别是在
图形
用户界面(GUI)的开发中,有时我们需要实现一个功能,即根据鼠标的移动在屏幕上画线。这个功能广泛应用于各种绘图软件和设计工具,允许用户自由绘制
图形
或进行标注。在Windows操作系统...
DrawShape(演示GDI绘制各种
图形
、应用画笔-画刷类库)
3. `SelectObject(
hdc
, object)`:在设备上下文中选择对象,可以是画笔或画刷。 在实际应用中,我们还需要使用`BeginPath`、`EndPath`和`StrokeAndFillPath`等函数来创建复杂的路径并进行描边和填充。同时,可以...
vc画直线曲线圆椭圆矩形 源码
在VC++编程环境中,画图是一项基础且重要的任务,它涉及到Windows API
图形
设备接口(GDI)的应用。本文将深入探讨如何使用VC++通过GDI来实现画直线、曲线、圆形、椭圆以及矩形的功能,并包含重绘机制。 首先,我们...
vc 画曲线 vc 画曲线
在VC++(Visual C++)开发环境中,画曲线是一项常见的任务,主要用于
图形
用户界面的创建、数据可视化或者科学计算中的结果展示。本文将详细讲解如何在VC++中实现曲线绘制,以及相关的知识点。 首先,VC++ 画曲线...
图形处理/算法
19,472
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章