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.b
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在 Windows 桌面上绘制屏幕反色字符,可以使用 Windows GDI (图形设备接口) 来实现。下面是一个简单的示例代码: ```cpp #include <windows.h> int main() { HDC hScreenDC = GetDC(NULL); // 获取屏幕设备上下文 int screenWidth = GetSystemMetrics(SM_CXSCREEN); // 屏幕宽度 int screenHeight = GetSystemMetrics(SM_CYSCREEN); // 屏幕高度 HFONT hFont = CreateFont(24, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Arial"); // 创建字体 SelectObject(hScreenDC, hFont); // 选择字体 SetBkColor(hScreenDC, RGB(0, 0, 0)); // 设置背景色为黑色 SetTextColor(hScreenDC, RGB(255, 255, 255)); // 设置文本颜色为白色 TextOutW(hScreenDC, screenWidth / 2 - 100, screenHeight / 2 - 12, L"Hello, C++!", 12); // 在屏幕中央绘制反色字符 DeleteObject(hFont); // 删除字体 ReleaseDC(NULL, hScreenDC); // 释放设备上下文 return 0; } ``` 在上述代码中,我们使用`GetDC(NULL)`函数获取屏幕设备上下文。然后,使用`GetSystemMetrics`函数获取屏幕宽度和高度。接下来,创建字体并选择它。然后,使用`SetBkColor`函数设置背景色为黑色,使用`SetTextColor`函数设置文本颜色为白色。最后,使用`TextOutW`函数在屏幕中央绘制反色字符。 请注意,此代码只适用于 Windows 平台,并且需要在 Windows 环境中编译和运行。绘制在屏幕上可能需要管理员权限。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值