社区
图形处理/算法
帖子详情
怎样把大于屏幕的位图保存下来
zyk100
2003-08-20 08:34:41
请问怎么样把大于屏幕的位图保存下来,我试了几都都只能处理客户处的图象
...全文
73
6
打赏
收藏
怎样把大于屏幕的位图保存下来
请问怎么样把大于屏幕的位图保存下来,我试了几都都只能处理客户处的图象
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zyk100
2003-08-20
打赏
举报
回复
就是这幅图显示在屏幕上有很多部分已经超出了屏幕
mct1025
2003-08-20
打赏
举报
回复
大于屏幕的位图 是什么?
来自文件,还是整个屏幕?
zyk100
2003-08-20
打赏
举报
回复
大哥,关键就是怎么把视图上的整个位图保存到内存DC上,我试了好几种都只能把客户区上的内容COPY到内存DC上
mct1025
2003-08-20
打赏
举报
回复
建立一个内存DC,用来保存整个位图
保存时使用内存DC,不要使用视图的DC
mct1025
2003-08-20
打赏
举报
回复
建立一个内存DC,来保存整个位图
保存时使用内存DC,不要使用视图的DC
RouYing76
2003-08-20
打赏
举报
回复
必须使用内存DC;
参看下列代码,其中的细节请查阅MSDN;
//为CreateDIBSection()准备
//dcSave变量在此为已经创建的内存DC
//saveRect变量在此为要画的范围
LPBITMAPINFO lpbmi = NULL;
LPBYTE lpBits;
HBITMAP hSaveBitmap, hOldBitmap;
// Allocate and fill out a BITMAPINFO struct for the new DIB
// Allow enough room for a 256-entry color table, just in case
lpbmi = ( BITMAPINFO * )::malloc( sizeof( BITMAPINFO ) );
::memset( lpbmi, 0, sizeof( BITMAPINFO ) );
lpbmi->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
lpbmi->bmiHeader.biWidth = saveRect.Width();
lpbmi->bmiHeader.biHeight = saveRect.Height();
lpbmi->bmiHeader.biPlanes = 1;
lpbmi->bmiHeader.biBitCount = 32;
lpbmi->bmiHeader.biCompression = BI_RGB;
lpbmi->bmiHeader.biSizeImage = 0;
lpbmi->bmiHeader.biXPelsPerMeter= 0;
lpbmi->bmiHeader.biYPelsPerMeter= 0;
lpbmi->bmiHeader.biClrUsed = 0;
lpbmi->bmiHeader.biClrImportant = 0;
//创建DIBs句柄
hSaveBitmap = ::CreateDIBSection( dcSave.GetSafeHdc(),
lpbmi,
DIB_RGB_COLORS,
( void ** )&lpBits,
NULL,
0);
hOldBitmap = (HBITMAP)::SelectObject( dcSave.GetSafeHdc(), hSaveBitmap);
//画
/********
//清屏白色
dcSave.PatBlt(0,0,saveRect.Width(),saveRect.Height(),WHITENESS);
//使用此dcSave画出需要
**********/
BITMAPFILEHEADER bfh;
bfh.bfType = 0x4d42;
bfh.bfReserved1 = 0;
bfh.bfReserved2 = 0;
bfh.bfOffBits = sizeof( BITMAPFILEHEADER ) + sizeof( BITMAPINFOHEADER );
bfh.bfSize = bfh.bfOffBits + lpbmi->bmiHeader.biHeight * lpbmi->bmiHeader.biWidth * 4;
lpbmi->bmiHeader.biSizeImage = lpbmi->bmiHeader.biHeight * lpbmi->bmiHeader.biWidth * 4;
//设置分辨率
lpbmi->bmiHeader.biXPelsPerMeter = ( LONG )( (nResolution / 2.54 ) * 100 );
lpbmi->bmiHeader.biYPelsPerMeter = ( LONG )( (nResolution / 2.54 ) * 100 );
FILE * pFile = ::fopen( strFileName, "wb");
fwrite( &bfh, sizeof( BITMAPFILEHEADER ), 1, pFile);
fwrite( lpbmi, sizeof( BITMAPINFOHEADER ), 1, pFile);
fwrite( lpBits, lpbmi->bmiHeader.biSizeImage, 1, pFile);
fclose( pFile);
::SelectObject( dcSave.GetSafeHdc(), hOldBitmap);
::DeleteObject( hSaveBitmap);
::free( lpbmi);
Windows游戏编程系列之1:GUI窗口界面编程及游戏入门实战
位图
简介 38 1)在资源中添加
位图
资源 39 2)从资源中加载
位图
: LoadBitmap 39 3)创建一个与当前DC相匹配的DC(内存DC) 39 4)将bitmap放入匹配的DC中:SelectObject 40 5)成像(1:1 比例 ) 40 6)取出
位图
40...
Bitmap
位图
文件读取、
保存
、
屏幕
截图
虽然现在网上已经有很多
位图
读取、
保存
的文章,很多写的都很详细,提供的源代码功能也很强大,但是我仍然要自己重写一个
位图
加载程序。主要是因为这些大牛们的文章写的太深奥了,代码功能太强大了,以至于像我这样的菜鸟读不懂。所以,我要力求简洁。省略掉一些细节,比方说调色板。为了能够方便容易操作,我的程序只支持24位以上的
位图
文件加载。 首先,了解下
位图
文件的...
用 Java
保存
位图
文件
虽然 Java 提供了几种打开图像的机制,但
保存
图像并不是它的强项。这篇技巧将讲述如何将图像
保存
在 24 位
位图
文件中。另外,Jean-Pierre 还提供了将图像文件写入
位图
文件所需的全部代码。 这篇技巧是 Java 技巧 43 的补充,那篇技巧说明了在 Java 应用程序中加载
位图
文件的过程。本月我再提供一篇教程,说明如何将图像
保存
在 24 位
位图
文件中,其中还包含将图像对象写入
位图
文件的代
OpenGL:
位图
字体
图像字体A: 这一课我们将创建一些基于2D图像的字体,它们可以缩放,但不能旋转,并且总是面向前方,但作为基本的显示来说,我想已经够了。 使用
位图
字体比起使用图形字体(贴图)看起来不止强100倍。你可以随时改变显示在
屏幕
上的文字,而且用不着为它们逐个制作贴图。只需要将文字定位,再使用我最新的gl命令就可以在
屏幕
上显示文字了。我尽可能试着将命令做的简单。你只需要敲入glPrint("Hello") 。
显示 256 色的
位图
问题
显示
位图
似乎相当简单。在应用程序的资源中添加一张漂亮的
位图
,使用函数 LoadBitmap 将
位图
装 入内存,然后将
位图
选入设备描述表,再使用函数 BitBlt 便可显示出
位图
。但是这样显示的
位图
和目标环境或许有所不同。比如在256色的环境里,即使你载入的是256色
位图
,也会按
屏幕
颜色(一般为24位色)画出,那应该怎么按
位图
原来的颜色画出呢?方法
要显示
位图
,首先必须了解 Windows 中
位图
的概念。
位图
有两种基本格式:设备相关
位图
(DDB) 和设备无关
位图
(DIB)。在
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章