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

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

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

更新:

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

更新2:

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

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

import turtle

from 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在屏幕上呈现):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值