是否有一个python模块可以一次绘制多个一像素宽的点?
我正在制作一个程序,用graphics.py绘制Mandelbrot集。我遇到了几个问题。例如,每个点的宽度为2像素,总共为4像素。另外,我希望能够同时绘制所有点,我认为graphics.py不允许这样做。是否有一个模块允许这样做 用于打印点的代码:是否有一个python模块可以一次绘制多个一像素宽的点?,python,graphics,Python,Graphics,我正在制作一个程序,用graphics.py绘制Mandelbrot集。我遇到了几个问题。例如,每个点的宽度为2像素,总共为4像素。另外,我希望能够同时绘制所有点,我认为graphics.py不允许这样做。是否有一个模块允许这样做 用于打印点的代码: division = 100 imsize = 2 * division resize = 3 * division def spawnplane(): global plane plane = GraphWin("Man
division = 100
imsize = 2 * division
resize = 3 * division
def spawnplane():
global plane
plane = GraphWin("Mandelbrot set", resize, imsize)
plane.setBackground(color_rgb(0, 0, 0))
def spawnaxes():
imaxis = Line(Point(2 * division, imsize), Point(2 * division, 0))
reaxis = Line(Point(0, imsize / 2), Point(resize, imsize / 2))
imaxis.setFill(color_rgb(255, 255, 255))
reaxis.setFill(color_rgb(255, 255, 255))
imaxis.draw(plane)
reaxis.draw(plane)
ticky = Line(Point(division, imsize / 2 - imsize / 20), Point(division, imsize / 2 + imsize / 20))
ticky.setFill(color_rgb(255, 255, 255))
ticky.draw(plane)
def plot(z, color):
pt = Point((2 + z.real) * division, (1 - z.imag) * division)
pt.setFill(color)
pt.draw(plane)
我检查了一下,它似乎使用了create_rectangle()
(在Canvas
中的tkinter
)这个边框增加了1个像素,它创建了点2x2
。即使使用pt.setWidth(0)
但是有一种win.plotPixel(x,y,color)
使用create_line()
并创建点1x1
顺便说一句:我使用
win.autoflush=False
在绘制所有像素后重新绘制窗口。通常,它会在每个像素后重新绘制窗口。可能使用numpy.array
并转换为图像或使用matplotlib
或cv2
-但是matplotlib
或cv2
将不适用于graphics.py
。顺便说一句:如果每个点都是2像素宽,那么可能使用了错误的宽度-也许你应该这样做使用width-1
@furas如何更改宽度?如果您需要有关graphics.py
的帮助,则应显示您的代码。我不知道你怎么画像素。据我所知,graphics.py
是基于tkinter
的,它使用矩形
来绘制像素,它使用(x,y,宽度,高度)
我不能运行你的代码,但是当我使用pt.draw(plane)
或plane.plotPixel(x,y,color)
时,我总是得到大小1x1的像素。也许你的问题在不同的地方-创建只绘制单个像素的代码,看看它是否真的创建了大于1x1
的像素。或者可能只是你的系统出了问题。我在LinuxMint上进行了测试。
from graphics import *
win = GraphWin()
win.autoflush = False
for x in range(10, 200, 10):
for y in range(10, 200, 10):
pt = Point(x, y)
pt.draw(win)
win.autoflush = True
#win.update()
win.getMouse()
win.close()
from graphics import *
win = GraphWin()
win.autoflush = False
for x in range(10, 200, 10):
for y in range(10, 200, 10):
win.plotPixel(x, y) # plotPixel(x, y, color)
win.autoflush = True
#win.update()
win.getMouse()
win.close()