有什麼方法可以用圖像填充Tkinter元素(更具體地說是橢圓形)。如果沒有,有沒有辦法調整圖像以適合橢圓形?我也不想使用PIL。用圖像填充Tkinter畫布元素
canvas.create_oval(val1, val2, val1+sz, val2+sz, fill=clr, outline=outln)
你會如何得到一個圖像,以適應像這樣的圓圈?
如果你想知道的話,我肯定會剔除圖像周圍的邊緣。
有什麼方法可以用圖像填充Tkinter元素(更具體地說是橢圓形)。如果沒有,有沒有辦法調整圖像以適合橢圓形?我也不想使用PIL。用圖像填充Tkinter畫布元素
canvas.create_oval(val1, val2, val1+sz, val2+sz, fill=clr, outline=outln)
你會如何得到一個圖像,以適應像這樣的圓圈?
如果你想知道的話,我肯定會剔除圖像周圍的邊緣。
在純Tkinter您的選擇是有限的。有一件事你可以做的是創建一個 '面具'圖像,在中間有一個透明的圓圈。然後降低你的背後的自己的形象。 (雖然效率不是很高)
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()
不,沒有辦法將圖像放在橢圓內。也就是說,你不能讓一個人填滿一個橢圓形。圖像只能是矩形。
您不使用PIL調整圖像大小的唯一選擇是調整它的兩倍。
你不是這個意思,「沒有辦法把圖像放在橢圓內嗎?」 – saulspatz
@saulspatz:是的。感謝您注意到這一點。我已經解決了答案。 –
你會怎麼做?我真的需要它是一個圈子,所以應該沒問題。 – lukejano