python中使用win32在桌面绘图的问题

lai472920955 2018-12-24 07:07:37
各位大神好:请教大家两个问题!
先上代码:

# -*- coding: utf-8 -*-
import json
import datetime
import time
import threading
import ctypes
import win32api
import win32gui
import win32con
import pywintypes
import win32ui

#通过win32获取当前鼠标x y
def get_curpos():
return win32gui.GetCursorPos();

#通过
def get_win_handle(pos):
return win32gui.WindowFromPoint(pos)

if __name__ == '__main__':
#time.sleep(2)
print("开始执行")
#hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
hwnd = win32gui.GetDesktopWindow();
hPen = win32gui.CreatePen(win32con.PS_SOLID, 3, win32api.RGB(255, 0, 255)) # 定义框颜色
for num in range(100,125):
win32gui.InvalidateRect(hwnd, None, True)
win32gui.UpdateWindow(hwnd)
win32gui.RedrawWindow(hwnd, None, None,win32con.RDW_FRAME | win32con.RDW_INVALIDATE | win32con.RDW_UPDATENOW | win32con.RDW_ALLCHILDREN)

hwndDC = win32gui.GetDC(hwnd) # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)

win32gui.SelectObject(hwndDC, hPen)
hbrush = win32gui.GetStockObject(win32con.NULL_BRUSH) # 定义透明画刷,这个很重要!!
prebrush = win32gui.SelectObject(hwndDC, hbrush)
win32gui.Rectangle(hwndDC, 447+3*num, 505+3*num, 591+3*num, 545+3*num) # 左上到右下的坐标
win32gui.SaveDC(hwndDC);
win32gui.SelectObject(hwndDC, prebrush)
# # 回收资源
#win32gui.DeleteObject(hPen)
# win32gui.DeleteObject(hbrush)
#win32gui.DeleteObject(prebrush)
win32gui.ReleaseDC(hwnd, hwndDC)
time.sleep(1)



此段代码中,有两大问题,第一个问题就是当我每画一次的时候,矩形会一闪而过,如何做到想保留到下个框画出来再清除呢?第二个问题就是,上次画的矩形,有可能清除不掉,当第二次画的时候,第一次画的没消失导致重复,这也如何保证下个矩形出来前能清除上个矩形!初接触python与win32,此段代码还是各种copy汇集而已,请各位大神指教下这两个问题应该怎么解决?
...全文
1447 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_43716620 2021-05-26
  • 打赏
  • 举报
回复
请问楼主找到解决办法了吗,我也遇到这个问题了

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧