利用Graphics的截图功能CopyFromScreen


该方式是直接对屏幕进行截图操作

UserControl chartContainPanel = new UserControl();
Graphics graph = chartContainPanel.CreateGraphics();
Size s = chartContainPanel.Size;
Bitmap memoryImage = new Bitmap(s.Width, s.Height, graph);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
Point screen = chartContainPanel.PointToScreen(this.Location);
memoryImage.Save(fileName);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Gdiplus::Graphics 中的 CopyFromScreen 函数进行屏幕截图的示例代码: ```cpp #include <windows.h> #include <gdiplus.h> #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus; int main() { // 初始化 GDI+ GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); // 获取屏幕大小 int screenWidth = GetSystemMetrics(SM_CXSCREEN); int screenHeight = GetSystemMetrics(SM_CYSCREEN); // 创建位图对象 Bitmap bitmap(screenWidth, screenHeight, PixelFormat32bppARGB); // 创建图形对象 Graphics graphics(&bitmap); // 从屏幕复制图像到位图 graphics.CopyFromScreen(0, 0, 0, 0, Size(screenWidth, screenHeight)); // 保存位图到文件 CLSID clsid; GetEncoderClsid(L"image/jpeg", &clsid); // 获取 JPEG 编码器的 CLSID bitmap.Save(L"screen.jpg", &clsid, NULL); // 释放 GDI+ GdiplusShutdown(gdiplusToken); return 0; } // 获取指定 MIME 类型的图像编码器的 CLSID int GetEncoderClsid(const WCHAR* mimeType, CLSID* pClsid) { UINT num = 0, size = 0; GetImageEncodersSize(&num, &size); if (size == 0) return -1; // 没有找到图像编码器 ImageCodecInfo* pImageCodecInfo = (ImageCodecInfo*)malloc(size); GetImageEncoders(num, size, pImageCodecInfo); for (UINT i = 0; i < num; i++) { if (wcscmp(pImageCodecInfo[i].MimeType, mimeType) == 0) { *pClsid = pImageCodecInfo[i].Clsid; free(pImageCodecInfo); return i; } } free(pImageCodecInfo); return -1; // 没有找到指定 MIME 类型的图像编码器 } ``` 注意: 1. 为了使用 GDI+,需要在代码中包含 gdiplus.h 头文件,并且链接 gdiplus.lib 库文件。 2. 上面的代码使用了 GetEncoderClsid 函数来获取 JPEG 编码器的 CLSID。如果你需要保存成其他格式的图片,可以自行修改该函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值