C++实现的屏幕截图(PNG或BMP)

上回分享了一个全屏截图的代码,保存为BMP,

C++实现屏幕截图(全屏截图)http://blog.youkuaiyun.com/sunflover454/article/details/48717731

实际使用的过程中我发现截图文件实在大,无赖又整成了PNG截图,现在分享出来。


MakePNG.h

//MakePNG.h

#pragma once
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib,"GdiPlus.lib") 

class CMakePNG
{
public:
	CMakePNG(void);
	~CMakePNG(void);

	BOOL MakePNG(HDC hDC,CRect rect,CString strFilePath);
	BOOL BMptoPNG(LPCWSTR StrBMp,LPCWSTR StrPNG);
	BOOL PNGtoBMp(LPCWSTR StrPNG,LPCWSTR StrBMp);
	BOOL GetEncoderClsid(WCHAR* pFormat,CLSID* pClsid);
private:
	GdiplusStartupInput m_gdiplusStartupInput;
	ULONG_PTR m_pGdiToken;
};

MakePNG.cpp

//MakePNG.cpp

#include "StdAfx.h"
#include "MakePNG.h"

CMakePNG::CMakePNG(void)
{
	GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
}

CMakePNG::~CMakePNG(void)
{
}

/***************************************************************************/
/*	功能:		根据rect屏幕抓图,保存为文件名为strFilePath的PNG图像文件   */
/*	输入参数:	HDC	hDC					屏幕HDC;                          */
/*				CRect rect				需要的矩形;                        */
/*				CString	strFilePath		保存文件全路径(含后缀名);        */
/***************************************************************************/
BOOL CMakePNG::MakePNG(HDC hDC, CRect rect, CString strFilePath)
{
	BITMAP bmp;
	PBITMAPINFO pbmi; 
	PBITMAPINFOHEADER pbih;     // bitmap info-header 
	BITMAPFILEHEADER 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值