为什么Tkinter画布的线条会出现锯齿状?

13

Tkinter.Canvas 绘制的线条不够平滑,如何使其更加平滑?

这是我尝试过的:

 from Tkinter import *
 root = Tk()
 cv = Canvas(root,bg = 'white')
 rt1 = cv.create_rectangle(10,10,110,110,width = 8,tags = ('r1','r2','r3'))

 def printRect(event):
     print 'rectangle'
 def printLine(event):
     print 'line'

 cv.tag_bind('r1','<Button-1>',printRect)
 cv.tag_bind('r1','<Button-3>',printLine)
 cv.create_line(10,20,200,200,width = 5,tags = 'r1')
 cv.pack()
 root.mainloop()

这是它的样子:

样例代码的tkinter输出

3个回答

8

Tkinter图形不支持抗锯齿,因此对角线看起来会有锯齿。可能有平台特定的解决方法,比如我找到的一个标题为在Tkinter/Windows下绘制抗锯齿图形的方法,可以提供所需功能。


1
你可以尝试对图像进行抗锯齿处理,通过在第一条线的下方绘制一个比第一条线宽一个像素的、颜色更清晰的第二条线来实现。

1
找到了一个应用这种方法的例子:https://github.com/vlachoudis/bCNC/issues/986 - Sergey Grechin
1
我发现它们只添加了半个像素(这意味着每边四分之一)。我想知道哪一个更好,以及为什么。 - Camion

0
  1. 绘制抗锯齿图像(使用Image PIL,numpy,opencv等)
  2. 在画布上显示图像。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接