Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0

说一说:Python GDI 绘图教程:像素、线条、矩形与文字绘制

[复制链接]

36万

主题

0

回帖

109万

积分

超级版主

Rank: 8Rank: 8

积分
1092248
发表于 昨天 20:19 | 显示全部楼层 |阅读模式
像素点绘制
以下代码运行后将会在屏幕500,100的位置绘制一个像素点

importwin32gui
importwin32api

#获取屏幕的设备上下文
hdc=win32guiGetDC(0)
x,y=500,100#点的坐标
color=win32apiRGB(255,0,0)#红色
win32guiSetPixel(hdc,x,y,color)#绘制像素点
上面的程序执行后也许不明显,因此我们改进一下,多铺点像素点便可清晰的看见,代码和效果如下

importwin32gui
importwin32api

#获取屏幕的设备上下文
hdc=win32guiGetDC(0)
color=win32apiRGB(255,0,0)#红色
whileTrue:
forxinrange(500,800):
foryinrange(500,800):
win32guiSetPixel(hdc,x,y,color)#绘制像素点
可以看到,以上代码执行后,将会在屏幕的500,500的位置开始绘制一个300*300的正方形



线条绘制
对于要绘制线条,若用像素点来绘制的话,效率非常的低,因此再来看下线条的绘制方式,代码和效果如下:

importwin32gui
importwin32con
importwin32api


hdc=win32guiGetDC(0)
color=win32apiRGB(255,0,0)#红色
pen=win32guiCreatePen(win32conPS_SOLID,3,color)#线条宽度为3
win32guiSelectObject(hdc,pen)#为设备上下文设置画笔

whileTrue:
win32guiMoveToEx(hdc,500,500)#绘制起点
win32guiLineTo(hdc,800,800)#绘制终点


绘制心矩形
绘制心矩形就比较好理解了,代码和效果如下:

importwin32gui
importwin32api


hdc=win32guiGetDC(0)
color=win32apiRGB(0,255,0)#绿色
brush=win32guiCreateSolidBrush(color)#创建心画刷
win32guiSelectObject(hdc,brush)

whileTrue:
win32guiFillRect(hdc,(600,600,500,500),brush)
关键代码为FillRect()函数,注意函数中坐标需要为一个元组对象,元组中首、二个表示一个点的坐标,第、四表示一个点的坐标,然后这两个点各自固定一个坐标便构成一个心矩形



绘制空心矩形
关于空心矩形的绘制,其有多种方式,可以是像素点构成的,也可以是线条构成的,也可以直接绘制空心矩形,先来看下线条构成的空心矩形如何现,代码和效果如下:

importwin32gui
importwin32con
importwin32api

#获取屏幕的设备上下文
hdc=win32guiGetDC(0)

#设置矩形边框的颜色和宽度
border_color=win32apiRGB(255,0,0)#红色
pen=win32guiCreatePen(win32conPS_SOLID,3,border_color)#线条宽度为3
win32guiSelectObject(hdc,pen)

#矩形的坐标
left,top,right,bottom=400,400,600,600#左、上、右、下坐标

whileTrue:
#绘制空心矩形
win32guiMoveToEx(hdc,left,top)#移动到起点
win32guiLineTo(hdc,right,top)#高边
win32guiLineTo(hdc,right,bottom)#右边
win32guiLineTo(hdc,left,bottom)#底边
win32guiLineTo(hdc,left,top)#左边


然后是直接绘制空心矩形的代码现,如下:

importwin32api
importwin32gui

dc=win32guiGetDC(0)
brush=win32guiCreateSolidBrush(win32apiRGB(255,138,0))

whileTrue:
win32guiFrameRect(dc,(400,400,600,600),brush)


绘制文字
基本的绘制文字如下,这将在500,500到600,600的区域绘制设置的文字:

importwin32con
importwin32gui

DC=win32guiGetDC(0)

win32guiDrawText(DC,"幽络源分享",-1,(500,500,600,600),win32conDT_BOTTOM)


如果要设置文字样式呢如下,我这里设置了字体高度和粗细,当然不止这些,这里演示一部分:

importwin32gui
importwin32con
importwin32api

#获取屏幕的设备上下文
DC=win32guiGetDC(0)

#创建字体结构
logfont=win32guiLOGFONT()
logfontlfHeight=48#字体高度
logfontlfWeight=win32conFW_HEAVY#字体粗细

#创建字体
font=win32guiCreateFontIndirect(logfont)

#选择字体到设备上下文
win32guiSelectObject(DC,font)

#绘制文本
win32guiSetTextColor(DC,win32apiRGB(0,0,255))#设置文本颜色
win32guiSetBkColor(DC,win32apiRGB(255,255,255))#设置背景色
win32guiDrawText(DC,"幽络源分享",-1,(500,500,800,600),win32conDT_BOTTOM)


总结
以上便是使用Python进行GDI绘制到屏幕的基础教程,当然,更多的功能还需自行探究pywin32库。



幽络源行业资深人士表示,其发展还会处于很好的态势。幽络源-免费源码,网络兼职,技术教程,项目服务一站式综合平台。https://www.youluoyuan.com/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|足球新闻网

GMT+8, 2025-4-21 23:58 , Processed in 0.067643 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表