python– 将乌龟图形保存到.eps文件时,背景颜色显示在屏幕上但不保存在.eps文件中

python– 将乌龟图形保存到.eps文件时,背景颜色显示在屏幕上但不保存在.eps文件中,第1张

概述我是Python的新手,并且一直在使用海龟模块作为学习语言的一种方式.感谢stackoverflow,我研究并学习了如何将图像复制到封装的postscript文件中,并且效果很好.然而,有一个问题.乌龟模块允许在屏幕上显示但不在.eps文件中显示的背景颜色.所有其他颜色,即笔颜色和乌龟颜色,使其通过但不是背景颜色.感兴趣的是,我不相信Tkinter的导入是必

我是Python的新手,并且一直在使用海龟模块作为学习语言的一种方式.

感谢stackoverflow,我研究并学习了如何将图像复制到封装的postscript文件中,并且效果很好.然而,有一个问题.乌龟模块允许在屏幕上显示但不在.eps文件中显示的背景颜色.所有其他颜色,即笔颜色和乌龟颜色,使其通过但不是背景颜色.

感兴趣的是,我不相信Tkinter的导入是必要的,因为我不相信我在这里使用任何Tkinter模块.我将其作为尝试诊断问题的一部分.我还使用了bgcolor = Orange而不是s.bgcolor =“orange”.

没有喜悦.

我包括一个简单的代码示例:

# Python 2.7.3 on a Macimport turtlefrom Tkinter import *s=turtle.Screen()s.bgcolor("orange")bob = turtle.Turtle()bob.circle(250)ts=bob.getscreen()ts.getcanvas().postscript(file = "turtle.eps")

我试图发布屏幕和.eps文件的图像,但stackoverflow不允许我作为新用户这样做.某种垃圾邮件预防.虽然简单到可视化,但屏幕背景颜色为橙色,eps文件为白色.

我很感激任何想法.

最佳答案postscript的设计目的是在纸张或胶片等媒体上制作标记,而不是光栅图形.因此,它本身没有可以设置为给定颜色的背景颜色,因为这通常是所用纸张或未曝光胶片的颜色.

为了模拟这个,您需要绘制一个与画布大小相同的矩形,并用您想要的颜色作为背景填充它.我没有在turtle模块中看到查询getcanvas()返回的canvas对象的任何内容,我能想到的唯一选择是读取turtle.cfg文件(如果有的话),或者只是硬编码默认的300×400大小.您可以查看源并找出存储当前画布的尺寸的位置并直接访问它们.

更新:

我刚刚在Python控制台中使用turtle模块进行游戏,并发现canvas getcanvas()返回的内容有一个名为_canvas的私有属性,它是一个< Tkinter.Canvas实例>.该对象具有winfo_wIDth()和winfo_height()方法,这些方法似乎包含当前海龟图形窗口的尺寸.所以我会尝试绘制一个这个大小的填充矩形,看看它是否能给你你想要的东西.

更新2:

这是代码显示如何做我建议的.注意:必须在任何其他图形之前绘制背景,否则创建的实心填充背景矩形将覆盖屏幕上的其他所有内容.

此外,添加的draw_background()函数需要花费大量的精力来保存并稍后将图形状态恢复到原来的状态.根据您的确切使用情况,这可能没有必要.

import turtlefrom Tkinter import *def draw_background(a_turtle):    """ Draw a background rectangle. """    ts = a_turtle.getscreen()    canvas = ts.getcanvas()    height = ts.getcanvas()._canvas.winfo_height()    wIDth = ts.getcanvas()._canvas.winfo_wIDth()    turtleheading = bob.heading()    turtlespeed = bob.speed()    penposn = bob.position()    penstate = bob.pen()    bob.penup()    bob.speed(0)  # fastest    bob.goto(-wIDth/2-2,-height/2+3)    bob.fillcolor(turtle.Screen().bgcolor())    bob.begin_fill()    bob.setheading(0)    bob.forward(wIDth)    bob.setheading(90)    bob.forward(height)    bob.setheading(180)    bob.forward(wIDth)    bob.setheading(270)    bob.forward(height)    bob.end_fill()    bob.penup()    bob.setposition(*penposn)    bob.pen(penstate)    bob.setheading(turtleheading)    bob.speed(turtlespeed)s = turtle.Screen()s.bgcolor("orange")bob = turtle.Turtle()draw_background(bob)ts = bob.getscreen()canvas = ts.getcanvas()bob.circle(250)canvas.postscript(file="turtle.eps")s.exitonclick()  # optional

这是产生的实际输出(通过Photoshop在屏幕上呈现): 总结

以上是内存溢出为你收集整理的python – 将乌龟图形保存到.eps文件时,背景颜色显示在屏幕上但不保存在.eps文件中全部内容,希望文章能够帮你解决python – 将乌龟图形保存到.eps文件时,背景颜色显示在屏幕上但不保存在.eps文件中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205410.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存