C++实现屏幕反色

目录

方法一:

方法二:


方法二常用一点。


效果:

如图

方法一:

思路:获取屏幕图像,反色后,设置为壁纸。

头文件:#include <windows.h>

#include <vector.h>
#include <cstdio>
#include <string>
#include <tchar.h>

代码:(调用Screenshot反转颜色)



BOOL GetHDCData(HDC hdc, const RECT& rcDC, std::vector<BYTE>& vtBuf)
{
    BOOL bRes = FALSE;
    HBITMAP hBmp = NULL;
    HDC hdcMem = NULL;

    __try
    {
        //Initilaize the bitmap information	
        BITMAPINFO bmpInfo = { 0 };
        bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        bmpInfo.bmiHeader.biWidth = rcDC.right - rcDC.left;
        bmpInfo.bmiHeader.biHeight = rcDC.bottom - rcDC.top;
        bmpInfo.bmiHeader.biPlanes = 1;
        bmpInfo.bmiHeader.biBitCount = 24;

        //Create the compatible DC to get the data
        hdcMem = CreateCompatibleDC(hdc);
        if (hdcMem == NULL)
        {
            //ASSERT(FALSE);
            //RETAILMSG(TRUE,(TEXT("CreateCompatibleDC failed! Error Code:0x%x\r\n"),GetLastError()));
            __leave;
        }

        //Get the data from the memory DC	
        BYTE* pData = NULL;
        hBmp = CreateDIBSection(hdcMem, &bmpInfo, DIB_RGB_COLORS, reinterpret_cast<VOID**>(&pData), NULL, 0);
        if (hBmp == NULL)
        {
            //ASSERT(FALSE);
            //RETAILMSG(TRUE,(TEXT("CreateDIBSection failed! Error Code:0x%x\r\n"),GetLastError()));
            __leave;
        }
        HGDIOBJ hOldObj = SelectObject(hdcMem, hBmp);

        //Draw to the memory DC
        SIZE sizeImg = { bmpInfo.bmiHeader.biWidth,bmpInfo.bmiHeader.biHeight };
        SIZE sizeDC = { rcD
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值