给出一张底图,用VC在图像上加文字后保存为指定的文件,处理过程中要求不显示图片直接在后台另外保存图,,急!!!急..
主要是不要显示出来./
主要是不要显示出来./
解决方案 »
- 如何快速判断某个网址是否可以访问?(内有详细内容)
- 监测远程登录(会话)的问题(WTSEnumerateSessions()) 请教高手
- 如何能够禁止不通过剪贴板截图的截图软件截图?
- ** 公司2个牛人(8年VC经验)都没有解决的问题, 你能搞定吗? **
- 为什么DLL编译出的函数是这个样?带有特殊字符 如:?? @@
- 求教关于WaitForSingleObject的解释?
- 请问现在我要看写什么书,自己有很不错的c++基础,包括模板,stl
- 请问哪位大侠有录音回放的源码?最简单能实现录音和回放的就行了.
- 视频上的透明窗口闪烁问题?
- memory check error
- VC里做界面时用到CXTOutBarCtrl类,不知道怎样给它的标题(也就是一级标题Folder)加上背景图片?
- 已经写好的MFC应用程序,如何改造成COM服务器,开放出应用程序接口
{
if(!hBitmap || !pchFileName) return FALSE; HDC hDC;
int iBits; // µ±Ç°·Ö±æÂÊÏÂÿÏóËØËùÕ¼×Ö½ÚÊý
WORD wBitCount; //λͼÖÐÿÏóËØËùÕ¼×Ö½ÚÊý
// ¶¨Òåµ÷É«°å´óС£¬ λͼÖÐÏñËØ×Ö½Ú´óС £¬Î»Í¼Îļþ´óС £¬ дÈëÎļþ×Ö½ÚÊý
DWORD dwPaletteSize=0, dwBmBitsSize=0, dwDIBSize=0, dwWritten=0;
BITMAP Bitmap; // λͼÊôÐԽṹ
BITMAPFILEHEADER bmfHdr; // λͼÎļþÍ·½á¹¹
BITMAPINFOHEADER bi; // λͼÐÅϢͷ½á¹¹
LPBITMAPINFOHEADER lpbi; // Ö¸ÏòλͼÐÅϢͷ½á¹¹
HANDLE fh, hDib, hPal,hOldPal = NULL; // ¶¨ÒåÎļþ£¬·ÖÅäÄÚ´æ¾ä±ú£¬µ÷É«°å¾ä±ú
// ¼ÆËãλͼÎļþÿ¸öÏñËØËùÕ¼×Ö½ÚÊý
hDC = CreateDC("DISPLAY", NULL, NULL, NULL);
iBits = GetDeviceCaps(hDC, BITSPIXEL) * GetDeviceCaps(hDC, PLANES);
DeleteDC(hDC);
if (iBits <= 1)
wBitCount = 1;
else if (iBits <= 4)
wBitCount = 4;
else if (iBits <= 8)
wBitCount = 8;
else
wBitCount = 24;
GetObject(hBitmap, sizeof(Bitmap), (LPSTR)&Bitmap);
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = Bitmap.bmWidth;
bi.biHeight = Bitmap.bmHeight;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrImportant = 0;
bi.biClrUsed = 0;
dwBmBitsSize = ((Bitmap.bmWidth * wBitCount + 31) / 32) * 4 * Bitmap.bmHeight;
//ΪλͼÄÚÈÝ·ÖÅäÄÚ´æ
hDib = GlobalAlloc(GHND,dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
// ´¦Àíµ÷É«°å
if (GetStockObject(DEFAULT_PALETTE))
{
hDC=::GetDC(NULL);
hPal=NULL;
hOldPal=::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
RealizePalette(hDC);
}
// »ñÈ¡¸Ãµ÷É«°åÏÂеÄÏñËØÖµ
GetDIBits(hDC,hBitmap, 0,
(UINT)Bitmap.bmHeight,
(LPSTR)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize,
(BITMAPINFO *)lpbi,
DIB_RGB_COLORS);
if(hOldPal) // »Ö¸´µ÷É«°å
{
::SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
RealizePalette(hDC);
::ReleaseDC(NULL, hDC);
}
fh = CreateFile(pchFileName, // ´´½¨Î»Í¼Îļþ
GENERIC_WRITE,
0,NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if (fh == INVALID_HANDLE_VALUE) return FALSE;
// ÉèÖÃλͼÎļþÍ·
bmfHdr.bfType = 0x4D42; // "BM"
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
dwDIBSize = sizeof(BITMAPFILEHEADER)
+ sizeof(BITMAPINFOHEADER)
+ dwPaletteSize + dwBmBitsSize;
bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER)
+ (DWORD)sizeof(BITMAPINFOHEADER)
+ dwPaletteSize;
WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);//дÈëλͼÎļþÍ·
WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);//дÈëλͼÎļþÆäÓàÄÚÈÝ
GlobalUnlock(hDib);// Çå³ý
GlobalFree(hDib);
CloseHandle(fh);
return TRUE;
}
即可保存为bmp 后台处理