首页 > 编程语言 >Python使用GDI进行绘制的各种方式 - 幽络源

Python使用GDI进行绘制的各种方式 - 幽络源

时间:2024-11-02 14:47:06浏览次数:3  
标签:Python 幽络源 hdc win32gui import GDI 绘制 500 win32api

介绍:

在这篇文章中,我们将深入探讨使用 Python 的 GDI(图形设备接口)进行绘图的各种方式。本文将涵盖以下内容:

  • 绘制像素点
  • 绘制线条
  • 绘制实心矩形
  • 绘制空心矩形
  • 绘制文字

像素点绘制

以下代码运行后将会在屏幕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的正方形

QQ_1730528373746

线条绘制

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

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)  # 绘制终点

QQ_1730528705320

绘制实心矩形

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

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()函数,注意函数中坐标需要为一个元组对象,元组中第一、二个表示一个点的坐标,第三、四表示一个点的坐标,然后这两个点各自固定一个坐标便构成一个实心矩形

QQ_1730529194141

绘制空心矩形

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

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)  # 左边

QQ_1730529587906

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

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)

QQ_1730529712269

绘制文字

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

import win32con
import win32gui

DC=win32gui.GetDC(0)

win32gui.DrawText(DC, "幽络源分享", -1, (500, 500, 600, 600), win32con.DT_BOTTOM)

QQ_1730529857567

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

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)

QQ_1730530146513

总结

以上便是使用Python进行GDI绘制到屏幕的基础教程,当然,更多的功能还需自行探究pywin32库。原文链接:Python使用GDI进行绘制的各种方式

标签:Python,幽络源,hdc,win32gui,import,GDI,绘制,500,win32api
From: https://blog.csdn.net/m0_73873732/article/details/143450910

相关文章

  • python之字符串总结
     字符串(str)对于字符串的学习,我整理了网上的一些资料,希望可以帮助到各位!!!概述由多个字母,数字,特殊字符组成的有限序列字符串的定义:可以使用一对单引号或者双引号,也可以一对三个单引号或者一对三个双引号定义字符串。注意:没有单符号的数据类型'a'"a"s1='......
  • 学霸带你游戏化 Python 编程知识轻松上手
    Python基础与游戏开发包在游戏开发的世界里,Python以其简单易用的特性而备受推崇。无论是独立游戏还是大型项目,Python都能在开发过程中发挥重要作用。通过了解Python的基础知识,开发者不仅能提升编程能力,还能更好地应对游戏设计中的各种挑战。接下来,我们将深入探讨Python......
  • python+flask框架的校园订餐管理系统的设计与实现(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展和高校生活节奏的加快,校园订餐管理系统已成为提升校园生活质量和效率的重要工具。当前,国内外对于订餐系统的研究主......
  • python+flask框架的校园表白墙前端视频8(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在校园生活中,学生间的情感交流与互动是校园文化的重要组成部分。近年来,随着社交媒体和互联网技术的发展,线上表白墙逐渐成为大学生表达情感......
  • python+flask框架的校园表白墙服务端视频8(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着互联网的快速发展,校园生活日益数字化和便捷化。在校园社交领域,表白墙作为一种独特的社交形式,深受广大学生喜爱。然而,关于校园表白墙服......
  • python+flask框架的校友拼车微信小程序服务端8(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的迅猛发展,人们的生活方式发生了翻天覆地的变化,其中出行方式的多样化尤为显著。拼车作为一种环保、经济的出行方式,越来......
  • 升级python版本后遇到的问题
    错误信息提示虚拟环境报错:删除venv文件后,重启pycharm,再次添加虚拟环境即可 升级python版本后MobileBy报错,python3.11升级为python3.12.3把 fromappium.webdriver.common.mobilebyimportMobileBy改为fromappium.webdriver.common.appiumbyimportAppiumBy即可 Fil......
  • 使用wxpython开发跨平台桌面应用,实现程序托盘图标和界面最小化及恢复处理4j
    在前面随笔《基于wxpython的跨平台桌面应用系统开发》介绍了一些关于wxpython开发跨平台桌面应用的总体效果,开发桌面应用,会有很多界面细节需要逐一处理,本篇随笔继续深入该主题,对开发跨平台桌面应用的一些实现细节继续深入研究并总结,介绍程序托盘图标和界面最小化及恢复处理。1、......
  • python+flask框架的五金店管理系统设计(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着信息技术的飞速发展和商业管理的日益精细化,传统五金店的管理方式逐渐暴露出效率低下、信息不透明等问题。目前,关于五金店管理系统的研......
  • python+flask框架的物业管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着城市化进程的加速,物业管理已成为现代社区治理的重要一环。当前,关于物业管理系统的研究在国内外已取得了一定成果,主要集中在智能化、信......