如何在屏幕上直接绘制像素?

How to draw a pixel on the screen directly?(如何在屏幕上直接绘制像素?)
本文介绍了如何在屏幕上直接绘制像素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做一些类似以下的事情:

...
pixel[0,0] = [ 254, 0, 0 ] # Draw R at pixel x0y0
pixel[2,1] = [ 0, 254, 0 ] # Draw G at pixel x2y1
pixel[4,2] = [ 0, 0, 254 ] # Draw B at pixel x4y2
...

我希望在短时间内显示多种不同配置的像素和颜色--写入中间文件的成本太高。

我应该如何最好地在Python中实现此目标?

推荐答案

直接回答:

这只能通过特定于操作系统的API来完成。某些操作系统不允许直接更改屏幕上的像素。

在Windows上,您可以使用pywin32库通过dc = GetDC(0)调用获取屏幕的设备上下文,然后使用SetPixel(dc, x, y, color)绘制像素。

import win32gui
import win32api

dc = win32gui.GetDC(0)
red = win32api.RGB(255, 0, 0)
win32gui.SetPixel(dc, 0, 0, red)  # draw red at 0,0

当然,你用这种方式画的东西随时都可能被抹去。

正确答案:

逐个像素绘制是绘制某些东西最慢的方法。例如,在Windows上,在内存中创建图像,然后在一个操作中绘制它,比使用SetPixel绘制快几个数量级。

如果您需要速度,可以使用一些针对Python的用户界面库,例如,Tkinter模块或PyQt。在内存中创建一个窗口和图像,然后在窗口上绘制图像。如果您需要操作像素,请在图像中操作它们并每次重新绘制。

这篇关于如何在屏幕上直接绘制像素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)