当前位置: 首页 > 面试题库 >

如何更新画布上的图像?

司徒骞尧
2023-03-14
问题内容

这就是我遇到麻烦的代码的本质:

camelot = Canvas(main, width = 400, height = 300)
camelot.grid(row = 0, column = 0, rowspan = 11, columnspan = 3)
MyImage = PhotoImage(file = "sample1.gif")
camelot.create_image(0, 0, anchor = NW, image = MyImage)

这是在开始时运行的。我稍后在另一个函数中要做的
“sample1.gif”替换为“sample2.gif”
然后是“sample3.gif”。我被卡住了,我一直在尝试的东西都没有
工作至今。


问题答案:

Add image to canvas:

self.image_on_canvas = self.canvas.create_image(0, 0, image = ...)

Change image:

self.canvas.itemconfig(self.image_on_canvas, image = ...)

Full example:

from Tkinter import *

#----------------------------------------------------------------------

class MainWindow():

    #----------------

    def __init__(self, main):

        # canvas for image
        self.canvas = Canvas(main, width=60, height=60)
        self.canvas.grid(row=0, column=0)

        # images
        self.my_images = []
        self.my_images.append(PhotoImage(file = "ball1.gif"))
        self.my_images.append(PhotoImage(file = "ball2.gif"))
        self.my_images.append(PhotoImage(file = "ball3.gif"))
        self.my_image_number = 0

        # set first image on canvas
        self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number])

        # button to change image
        self.button = Button(main, text="Change", command=self.onButton)
        self.button.grid(row=1, column=0)

    #----------------

    def onButton(self):

        # next image
        self.my_image_number += 1

        # return to first image
        if self.my_image_number == len(self.my_images):
            self.my_image_number = 0

        # change image
        self.canvas.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number])

#----------------------------------------------------------------------

root = Tk()
MainWindow(root)
root.mainloop()


 类似资料:
  • 问题内容: 我正在尝试使用HTML中的新canvas元素。 我只是想将图像添加到画布,但是由于某种原因它不起作用。 我有以下代码: 的HTML 的CSS JS 图片存在,并且没有JavaScript错误。该图像只是不显示。 这一定是我错过的非常简单的事情… 问题答案: 也许您应该等到图像加载后才能绘制图像。尝试以下方法: 即在图像的onload回调中绘制图像。

  • 问题内容: 我目前正在使用 http://paperjs.org 创建HTML5画布绘图应用程序。我想让用户将图像上传到画布中。我知道我需要进行登录和注册,但是有更简单的方法吗?我已经看到HTML5拖放式上传。 问题答案: 我假设您的意思是将图像加载到画布中,而不是从画布上载图像。 在这里阅读他们所有的画布文章可能是一个好主意 但基本上,您要做的是在javascript中创建图片,然后将image

  • 实际上,我可以使用函数来完成。我从“HTML5画布-如何在图像背景上画一条线?”中得到的东西。但是我需要在不使用from函数的情况下绘制图像,如下所示:

  • 我的第一个ionic网络应用程序有问题。我应该做一些图表,所以我决定使用d3.js和tree.js。我增加了用不同类型的图表可视化我的数据的可能性。当我在同一个画布上绘制不同的图表时,问题出现了,所以我想我必须在每次更新之前清除画布。这是我的代码: 在网络上搜索(如何清除画布以进行重绘),我试图添加以下行: 但是我仍然有问题。 演示我的问题 你能帮我吗?谢了。

  • 我在chartJS中制作了一个图表,我想根据用户从下拉列表中选择的内容使用新数据更新它,使用相同的画布。问题是当我执行更新功能时,图表会用新数据更新,但过一会儿又会回到原始图表。我该如何解决这个问题?下面是代码,感谢大家的帮助:

  • 我可以绘制图像,但我如何旋转该图像例如45度并绘制它,然后绘制另一个图像与-50度旋转在同一画布? 不适用于我,因为它会旋转所有画布内容。