怎样用程序在内存生成一个灰色的bmp图片?
解决方案 »
- WSAAsyncSelect模型?
- CMSChart实时获取数据,更新界面时 屏幕会闪 怎么解决
- VC中DIALOG资源中各类型有什么区别,到哪都找不到啊
- 加密问题
- 怎么连接数据库是跳出“无效指针”的错误?有源码,大家帮帮忙吧,我的头已经很大了
- 高手过招了,这里有个问题?
- 谁自己从零开发过一个Edit控件?
- 请问如何获取移动设备的路径?
- 请问各位大侠,IDirectDrawGammaControl需要哪个连接库?我找了几天,也没有找到!!!谢谢!!!
- 怎么由app中得到mainfrm的指针,或者得到doc/view的指针?
- MFC菜单问题
- 我写了个基于IE的浏览器,如何用编程的方式让系统默认浏览器指定到我的浏览器?谢谢。
{
HDC hMemDC;
// 屏幕和内存设备描述表
HBITMAP hBitmap,hOldBitmap;
// 位图句柄
int nX, nY, nX2, nY2;
// 选定区域坐标
int nWidth, nHeight;
// 位图宽度和高度 // 确保选定区域不为空矩形
if ( IsRectEmpty( lpRect ) ) return NULL; // 获得选定区域坐标
nX= lpRect->left;
nY= lpRect->top;
nX2 = lpRect->right;
nY2 = lpRect->bottom;
nWidth = nX2 - nX;
nHeight = nY2 - nY;
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC= CreateCompatibleDC( hScrDC );
// 创建一个与屏幕设备描述表兼容的位图
hBitmap = CreateCompatibleBitmap( hScrDC, nWidth, nHeight );
// 把新位图选到内存设备描述表中
hOldBitmap = ( HBITMAP )SelectObject( hMemDC, hBitmap );
// 把屏幕设备描述表拷贝到内存设备描述表中
StretchBlt( hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, nWidth, nHeight, SRCCOPY );
//得到屏幕位图的句柄
hBitmap = ( HBITMAP )SelectObject( hMemDC, hOldBitmap );
//清除
DeleteDC( hMemDC );
DeleteObject( hOldBitmap );
//返回位图句柄
return hBitmap;
}void C**Dlg::OnbuildBitmap( )
{
CDC *pdc=GetDC();
//----------------------------------------------------
// 下面是创建兼容DC和兼容DC使用的CBitmap,并规定兼容
// DC的绘图绘制在创建的CBitmap上。
// 经过这一句:MenDC.SelectObject(&bm);以后,不管使用
// MenDC绘制什么,实际上都是绘制在了CBitmap bm;这个内
// 存位图上了.
//---------------------------------------------------- CDC MenDC;
CBitmap bm;
MenDC.CreateCompatibleDC( pdc );
bm.CreateCompatibleBitmap( pdc, WD+2, HT+2 ); //设定背景位图大小,最好是整个客户区大小
MenDC.SelectObject( &bm );//----------------------------------------------------
// 下面使用MenDC绘制你想要的任何东西,这里只添加了一个文本
//---------------------------------------------------- MenDC.TextOut( 1, 1, "safds");
//MenDC.MoveTo
//MenDC.Ellipse //所有绘图都在这个区间进行
//----------------------------------------------------
// 下面设定你要从CBitmap bm;上截取哪一部分。
//---------------------------------------------------- RECT rt;
rt.left = 0; rt.right = cutWD+2;
rt.top = 0; rt.bottom = cutHT+2;//---------------------------------------------------- HBITMAP hBmp = CopyDCToBitmap( MenDC.GetSafeHdc(), &rt );
SaveBmp( hBmp, "MM.bmp" );
//---------------------------------------------------- bm.DeleteObject();
MenDC.DeleteDC();
ReleaseDC(pdc);
}