把屏幕保存成图片的问题

Aerith 2006-04-27 10:02:57
我要用VC做一个类似Windows画图的工具,主要功能就是把在窗口画的线条保存成图片,以供web使用。画的过程没什么问题,主要问题在保存图片上。

第一个问题是,选择什么工具比较好?我在网上搜到了IPICTURE和CXImage,都是处理图片用的。但是我都没用过,不知道哪个可以满足我的需要。是否还有别的办法?请用过相关工具的朋友们介绍一下,谢谢。

还有的问题就是,保存成什么格式的图片好呢?bmp,jpg,gif,png……?
...全文
282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
y_cc 2006-05-16
  • 打赏
  • 举报
回复
up
CUG122032 2006-05-15
  • 打赏
  • 举报
回复
void CDemo1_0View::SaveDC()
{
MemDC.DeleteDC();
Bitmap.DeleteObject();
CClientDC dc(this);
CRect rect;
GetClientRect(rect);
int Width = rect.Width();
int Height = rect.Height();
MemDC.CreateCompatibleDC(&dc);
Bitmap.CreateCompatibleBitmap(&dc,Width,Height);
MemDC.SelectObject(Bitmap);
MemDC.BitBlt(0, 0, Width, Height, &dc,0, 0, SRCCOPY);
nDraw = 1;
}

//上面这段把屏幕存到一块内存DC中---MemDC


下面这段把MemDC中的内容存成一个***.bmp文件.

void CDemo1_0View::OnFileSave()
{
Bitmap.GetBitmap(&bm);
DWORD size = bm.bmWidthBytes * bm.bmHeight;
LPSTR lpData = (LPSTR)GlobalAllocPtr(GPTR, size);


BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
bih.biBitCount = bm.bmBitsPixel;
bih.biClrImportant = 0;
bih.biClrUsed = 0;
bih.biCompression = 0;
bih.biHeight = bm.bmHeight;
bih.biPlanes = 1;
bih.biSize = sizeof(BITMAPINFOHEADER);
bih.biSizeImage = size;
bih.biWidth = bm.bmWidth;
bih.biXPelsPerMeter = 0;
bih.biYPelsPerMeter = 0;
GetDIBits(MemDC,Bitmap,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
bfh.bfReserved1 = bfh.bfReserved2 = 0;
bfh.bfType = ((WORD)('M'<< 8)|'B');
bfh.bfSize = 54 + size;
bfh.bfOffBits = 54;


CFileDialog dlg(false,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()!=IDOK)
return;
CFile bf;
CString ss=dlg.GetPathName();
if(bf.Open(ss, CFile::modeCreate | CFile::modeWrite))
{
bf.WriteHuge(&bfh, sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bih, sizeof(BITMAPINFOHEADER));
bf.WriteHuge(lpData, size);
bf.Close();
AfxMessageBox("已保存,可安全关闭~~");
}
GlobalFreePtr(lpData);
}
Aerith 2006-05-15
  • 打赏
  • 举报
回复
请问,GDI+和GDI能混用吗?
比如说我用GDI方式画图,再用GDI+来保存图片?
Aerith 2006-04-29
  • 打赏
  • 举报
回复
网上搜到的关于GDI+的例子都是“打开图片-修改-保存图片”这样一个过程,而我现在要做的不是打开图片,而是用程序生成一幅图片,而且不一定是画在屏幕上,有可能是在内存里画,然后保存成文件,这样该怎么创建呢?
moloto2004 2006-04-27
  • 打赏
  • 举报
回复
using gdi+

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧