分享

VC 实现快速截屏

 阿钢avckkrh3m1 2022-11-30 发布于重庆

// 截取全屏

#include

#include <GdiPlus.h>

#include <atlimage.h> // CImage

#pragma comment(lib, ’GdiPlus.lib’)

int main()

{

HDC hdcSrc = GetDC(NULL);

int nBitPerPixel = GetDeviceCaps(hdcSrc, BITSPIXEL);

int nWidth = GetDeviceCaps(hdcSrc, HORZRES);

int nHeight = GetDeviceCaps(hdcSrc, VERTRES);

CImage image;

image.Create(nWidth, nHeight, nBitPerPixel);

BitBlt(image.GetDC(), 0, 0, nWidth, nHeight, hdcSrc, 0, 0, SRCCOPY);

ReleaseDC(NULL, hdcSrc);

image.ReleaseDC();

image.Save(L’ScreenShot.png’, Gdiplus::ImageFormatPNG);//ImageFormatJPEG

image.Save(L’ScreenShot.jpg’, Gdiplus::ImageFormatJPEG);//ImageFormatJPEG

image.Save(L’ScreenShot.bmp’, Gdiplus::ImageFormatBMP);//ImageFormatBMP

system(’pause’);

return 0;

}

#include

#include <GdiPlus.h>

#include <atlimage.h> // CImage

#pragma comment(lib, ’GdiPlus.lib’)

int main()

{

HDC hdcSrc = GetDC(NULL);

int nBitPerPixel = GetDeviceCaps(hdcSrc, BITSPIXEL);

int nWidth = GetDeviceCaps(hdcSrc, HORZRES);

int nHeight = GetDeviceCaps(hdcSrc, VERTRES);

CImage image;

image.Create(nWidth, nHeight, nBitPerPixel);

BitBlt(image.GetDC(), 0, 0, nWidth, nHeight, hdcSrc, 0, 0, SRCCOPY);

ReleaseDC(NULL, hdcSrc);

image.ReleaseDC();

image.Save(L’ScreenShot.png’, Gdiplus::ImageFormatPNG);//ImageFormatJPEG

image.Save(L’ScreenShot.jpg’, Gdiplus::ImageFormatJPEG);//ImageFormatJPEG

image.Save(L’ScreenShot.bmp’, Gdiplus::ImageFormatBMP);//ImageFormatBMP

system(’pause’);

return 0;

}

// 截取部分

#include

#include <GdiPlus.h>

#include <atlimage.h> // CImage

#pragma comment(lib, ’GdiPlus.lib’)

struct Rect

{

int x;

int y;

int width;

int height;

Rect(int _x, int _y, int _w, int _h)

: x(_x), y(_y), width(_w), height(_h) {}

};

int main()

{

HDC hdcSrc = GetDC(NULL);

int nBitPerPixel = GetDeviceCaps(hdcSrc, BITSPIXEL);

int nWidth = GetDeviceCaps(hdcSrc, HORZRES);

int nHeight = GetDeviceCaps(hdcSrc, VERTRES);

Rect rect(100, 100, 800, 600);

CImage image;

image.Create(rect.width, rect.height, nBitPerPixel);

/*!

BOOL BitBlt(HDC hdc, int x, int y, int cx, int cy, HDC hdcSrc, int x1, int y1, DWORD rop);

hdc : 目标hdc

x : 目标矩形左上角的逻辑x坐标

y : 目标矩形左上角的逻辑y坐标

cx : 源矩形和目标矩形的宽度

cy : 源矩形和目标矩形的高度

hdcSrc : 源设备上下文句柄

x1 : 源矩形左上角的x坐标(以逻辑单位表示)。

x2 : 源矩形左上角的y坐标(以逻辑单位表示)。

rop :

*/

BitBlt(image.GetDC(), 0, 0, nWidth, nHeight, hdcSrc, rect.x, rect.y, SRCCOPY);

ReleaseDC(NULL, hdcSrc);

image.ReleaseDC();

image.Save(L’ScreenShot.png’, Gdiplus::ImageFormatPNG);//ImageFormatJPEG

image.Save(L’ScreenShot.jpg’, Gdiplus::ImageFormatJPEG);//ImageFormatJPEG

image.Save(L’ScreenShot.bmp’, Gdiplus::ImageFormatBMP);//ImageFormatBMP

//system(’pause’);

return 0;

}

#include

#include <GdiPlus.h>

#include <atlimage.h> // CImage

#pragma comment(lib, ’GdiPlus.lib’)

struct Rect

{

int x;

int y;

int width;

int height;

Rect(int _x, int _y, int _w, int _h)

: x(_x), y(_y), width(_w), height(_h) {}

};

int main()

{

HDC hdcSrc = GetDC(NULL);

int nBitPerPixel = GetDeviceCaps(hdcSrc, BITSPIXEL);

int nWidth = GetDeviceCaps(hdcSrc, HORZRES);

int nHeight = GetDeviceCaps(hdcSrc, VERTRES);

Rect rect(100, 100, 800, 600);

CImage image;

image.Create(rect.width, rect.height, nBitPerPixel);

/*!

BOOL BitBlt(HDC hdc, int x, int y, int cx, int cy, HDC hdcSrc, int x1, int y1, DWORD rop);

hdc : 目标hdc

x : 目标矩形左上角的逻辑x坐标

y : 目标矩形左上角的逻辑y坐标

cx : 源矩形和目标矩形的宽度

cy : 源矩形和目标矩形的高度

hdcSrc : 源设备上下文句柄

x1 : 源矩形左上角的x坐标(以逻辑单位表示)。

x2 : 源矩形左上角的y坐标(以逻辑单位表示)。

rop :

*/

BitBlt(image.GetDC(), 0, 0, nWidth, nHeight, hdcSrc, rect.x, rect.y, SRCCOPY);

ReleaseDC(NULL, hdcSrc);

image.ReleaseDC();

image.Save(L’ScreenShot.png’, Gdiplus::ImageFormatPNG);//ImageFormatJPEG

image.Save(L’ScreenShot.jpg’, Gdiplus::ImageFormatJPEG);//ImageFormatJPEG

image.Save(L’ScreenShot.bmp’, Gdiplus::ImageFormatBMP);//ImageFormatBMP

//system(’pause’);

return 0;

}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约