用图像填充 Tkinter Canvas 元素
Filling a Tkinter Canvas Element with an Image
有什么方法可以用图像填充 Tkinter 元素(更具体地说是椭圆形)。如果没有,是否有任何方法可以调整图像大小以适合椭圆形?我也不想使用 PIL。
canvas.create_oval(val1, val2, val1+sz, val2+sz, fill=clr, outline=outln)
如何让图像适合这样的圆圈?
如果您想知道,我当然也会剔除图像周围的边缘。
不,无法将图像放入椭圆内。也就是说,你不能让一个人填满一个椭圆。图片只能是矩形。
在不使用 PIL 的情况下调整图像大小的唯一选择是将其调整为两倍。
在普通的 Tkinter 中,您的选择是有限的。你可以做的一件事是创建一个
'mask' 图片中间有一个透明圆圈。然后降低你的
自己的形象在它的背后。 (虽然效率不高)
from tkinter import *
root = Tk()
canvas = Canvas(root, width=200, height=200, bd=0,
highlightthickness=0)
canvas.pack()
mask = PhotoImage(width=200, height=200)
cx,cy = 100,100 # image & circle center point
r = 100 # circle radius
r_squared = r*r
for y in range(200):
for x in range(200):
# using the formula for a circle:
# (x - h)^2 + (y - k)^2 = r^2
# any pixel outside our circle gets filled
if (x - cx)**2 + (y - cy)**2 > r_squared:
mask.put('blue', (x,y))
canvas.create_image(100,100, image=mask, anchor='c')
myimage = PhotoImage(file='bigpython.gif')
item = canvas.create_image(100,100, image=myimage, anchor='c')
canvas.lower(item)
root.mainloop()
我已经尝试了所有方法来尝试让照片适合圆圈,但唯一有效的方法是使用 Windows 中的 Paint 2D 应用程序调整图像大小,然后使用将图像调整为用于填充圆圈的图像。
有什么方法可以用图像填充 Tkinter 元素(更具体地说是椭圆形)。如果没有,是否有任何方法可以调整图像大小以适合椭圆形?我也不想使用 PIL。
canvas.create_oval(val1, val2, val1+sz, val2+sz, fill=clr, outline=outln)
如何让图像适合这样的圆圈?
如果您想知道,我当然也会剔除图像周围的边缘。
不,无法将图像放入椭圆内。也就是说,你不能让一个人填满一个椭圆。图片只能是矩形。
在不使用 PIL 的情况下调整图像大小的唯一选择是将其调整为两倍。
在普通的 Tkinter 中,您的选择是有限的。你可以做的一件事是创建一个 'mask' 图片中间有一个透明圆圈。然后降低你的 自己的形象在它的背后。 (虽然效率不高)
from tkinter import *
root = Tk()
canvas = Canvas(root, width=200, height=200, bd=0,
highlightthickness=0)
canvas.pack()
mask = PhotoImage(width=200, height=200)
cx,cy = 100,100 # image & circle center point
r = 100 # circle radius
r_squared = r*r
for y in range(200):
for x in range(200):
# using the formula for a circle:
# (x - h)^2 + (y - k)^2 = r^2
# any pixel outside our circle gets filled
if (x - cx)**2 + (y - cy)**2 > r_squared:
mask.put('blue', (x,y))
canvas.create_image(100,100, image=mask, anchor='c')
myimage = PhotoImage(file='bigpython.gif')
item = canvas.create_image(100,100, image=myimage, anchor='c')
canvas.lower(item)
root.mainloop()
我已经尝试了所有方法来尝试让照片适合圆圈,但唯一有效的方法是使用 Windows 中的 Paint 2D 应用程序调整图像大小,然后使用将图像调整为用于填充圆圈的图像。