比较python中的光标图标位图

2024-09-29 02:16:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过比较位图来检查光标图标是否已更改。你知道吗

到目前为止,我已经尝试了下面的代码片段,但它不能正常工作。你知道吗

import win32api, win32con, win32gui, win32ui

info = win32gui.GetCursorInfo()
hdc = win32ui.CreateDCFromHandle(win32gui.GetDC(0))
hbmp = win32ui.CreateBitmap()
hbmp.CreateCompatibleBitmap(hdc, 35, 35)
hdc = hdc.CreateCompatibleDC()

hdc.DrawIcon((0,0), info[1])
hbmp.SaveBitmapFile(hdc, 'icon.bmp')

这段代码只生成一个黑色的矩形位图(大部分是在互联网上找到的)。一般来说,我宁愿不保存位图,只是比较两个位图作为图像与枕头,但我不知道怎么做。你知道吗


Tags: 代码importinfo图标光标win32guiwin32apiwin32con
1条回答
网友
1楼 · 发布于 2024-09-29 02:16:07

创建了内存DC和内存位图之后,SelectObject用于将内存位图选择到内存DC中。只有这样位图才能工作。你知道吗

修改代码:

import win32api, win32con, win32gui, win32ui

info = win32gui.GetCursorInfo()
hdc = win32ui.CreateDCFromHandle(win32gui.GetDC(0))
hbmp = win32ui.CreateBitmap()
hbmp.CreateCompatibleBitmap(hdc, 35, 35)
hdc = hdc.CreateCompatibleDC()
hdc.SelectObject(hbmp)

hdc.DrawIcon((0,0), info[1])
hbmp.SaveBitmapFile(hdc, 'icon.bmp')

win32gui.DestroyIcon(info[1])
win32gui.DeleteObject(hbmp.GetHandle())
hdc.DeleteDC()

当您不再需要位图时,调用DeleteObject函数将其删除。你知道吗

类似的操作适用于游标和内存DC释放。你知道吗

相关问题 更多 >