【问题标题】:Why are the Tkinter canvas lines jagged?为什么 Tkinter 画布线条呈锯齿状?
【发布时间】:2012-09-15 09:24:12
【问题描述】:

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()

它是这样的:

【问题讨论】:

    标签: python tkinter antialiasing


    【解决方案1】:

    Tkinter 图形没有抗锯齿,这就是对角线出现锯齿状的原因。可能有一种特定于平台的解决方法,例如我发现的标题为Drawing Anti-Aliased Graphics Under Tkinter/Windows 的解决方法,以提供您想要的功能。

    【讨论】:

      【解决方案2】:

      您可以尝试对穷人进行一些抗锯齿处理,方法是在第一条线之前(下方)绘制一个颜色更清晰、大一个像素的第二条线。

      【讨论】:

      • 找到了一个应用这种方法的例子:github.com/vlachoudis/bCNC/issues/986
      • 我看到他们只添加了半个像素(这意味着每边四分之一。我想知道哪个最好,为什么。
      【解决方案3】:
      1. 绘制抗锯齿图像(使用 Image PIL、numpy、opencv 等)
      2. 在画布上显示图像。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 2012-06-18
        • 1970-01-01
        • 2017-03-21
        相关资源
        最近更新 更多