像素点绘制
以下代码运行后将会在屏幕500,100的位置绘制一个像素点
import win32gui
import win32api
# 获取屏幕的设备上下文
hdc = win32gui.GetDC(0)
x, y = 500, 100 # 点的坐标
color = win32api.RGB(255, 0, 0) # 红色
win32gui.SetPixel(hdc, x, y, color) # 绘制像素点
上面的程序执行后也许不明显,因此我们改进一下,多铺点像素点便可清晰的看见,代码和效果如下
import win32gui
import win32api
# 获取屏幕的设备上下文
hdc = win32gui.GetDC(0)
color = win32api.RGB(255, 0, 0) # 红色
while True:
for x in range(500,800):
for y in range(500,800):
win32gui.SetPixel(hdc, x, y, color) # 绘制像素点
可以看到,以上代码执行后,将会在屏幕的500,500的位置开始绘制一个300*300的正方形
线条绘制
对于要绘制线条,若用像素点来绘制的话,效率非常的低,因此再来看下线条的绘制方式,代码和效果如下:
import win32gui
import win32con
import win32api
hdc = win32gui.GetDC(0)
color = win32api.RGB(255, 0, 0) # 红色
pen = win32gui.CreatePen(win32con.PS_SOLID, 3, color) # 线条宽度为3
win32gui.SelectObject(hdc, pen) #为设备上下文设置画笔
while True:
win32gui.MoveToEx(hdc, 500, 500) # 绘制起点
win32gui.LineTo(hdc, 800, 800) # 绘制终点
绘制实心矩形
绘制实心矩形就比较好理解了,代码和效果如下:
import win32gui
import win32api
hdc = win32gui.GetDC(0)
color = win32api.RGB(0, 255, 0) # 绿色
brush = win32gui.CreateSolidBrush(color) # 创建实心画刷
win32gui.SelectObject(hdc, brush)
while True:
win32gui.FillRect(hdc,(600,600,500,500),brush)
关键代码为FillRect()函数,注意函数中坐标需要为一个元组对象,元组中第一、二个表示一个点的坐标,第三、四表示一个点的坐标,然后这两个点各自固定一个坐标便构成一个实心矩形
绘制空心矩形
关于空心矩形的绘制,其实有多种方式,可以是像素点构成的,也可以是线条构成的,也可以直接绘制空心矩形,先来看下线条构成的空心矩形如何实现,代码和效果如下:
import win32gui
import win32con
import win32api
# 获取屏幕的设备上下文
hdc = win32gui.GetDC(0)
# 设置矩形边框的颜色和宽度
border_color = win32api.RGB(255, 0, 0) # 红色
pen = win32gui.CreatePen(win32con.PS_SOLID, 3, border_color) # 线条宽度为3
win32gui.SelectObject(hdc, pen)
# 矩形的坐标
left, top, right, bottom = 400, 400, 600, 600 # 左、上、右、下坐标
while True:
# 绘制空心矩形
win32gui.MoveToEx(hdc, left, top) # 移动到起点
win32gui.LineTo(hdc, right, top) # 顶边
win32gui.LineTo(hdc, right, bottom) # 右边
win32gui.LineTo(hdc, left, bottom) # 底边
win32gui.LineTo(hdc, left, top) # 左边
然后是直接绘制空心矩形的代码实现,如下:
import win32api
import win32gui
dc = win32gui.GetDC(0)
brush=win32gui.CreateSolidBrush(win32api.RGB(255, 138, 0))
while True:
win32gui.FrameRect(dc,(400,400,600,600),brush)
绘制文字
基本的绘制文字如下,这将在500,500到600,600的区域绘制设置的文字:
import win32con
import win32gui
DC=win32gui.GetDC(0)
win32gui.DrawText(DC, "幽络源分享", -1, (500, 500, 600, 600), win32con.DT_BOTTOM)
如果要设置文字样式呢?如下,我这里设置了字体高度和粗细,当然不止这些,这里演示一部分:
import win32gui
import win32con
import win32api
# 获取屏幕的设备上下文
DC = win32gui.GetDC(0)
# 创建字体结构
logfont = win32gui.LOGFONT()
logfont.lfHeight = 48 # 字体高度
logfont.lfWeight = win32con.FW_HEAVY # 字体粗细
# 创建字体
font = win32gui.CreateFontIndirect(logfont)
# 选择字体到设备上下文
win32gui.SelectObject(DC, font)
# 绘制文本
win32gui.SetTextColor(DC, win32api.RGB(0, 0, 255)) # 设置文本颜色
win32gui.SetBkColor(DC, win32api.RGB(255, 255, 255)) # 设置背景色
win32gui.DrawText(DC, "幽络源分享", -1, (500, 500, 800, 600), win32con.DT_BOTTOM)
总结
以上便是使用Python进行GDI绘制到屏幕的基础教程,当然,更多的功能还需自行探究pywin32库。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容