首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python draw_ellipse或draw_rectangle

Python draw_ellipse或draw_rectangle
EN

Stack Overflow用户
提问于 2017-11-26 10:55:19
回答 1查看 221关注 0票数 0

我是个老手,多年来一直用Fortran、C、C++、Perl和一些Java编程,并试图学习这种新的Python语言。

我有一个小程序,它使用PIL创建一个图像,绘制一些原语(矩形、椭圆等)。并把它保存到巴布亚新几内亚。效果很好..。没问题。

我发现,在过去,“真正学习”一门语言的最好方法是“在引擎盖下窥视”并理解机械原理(双关语!)我以为我在进步..。但是,在查看PIL库以查看幕后发生了什么时,我在ImageDraw.py中找到了以下代码

代码语言:javascript
复制
def ellipse(self, xy, fill=None, outline=None):
    """Draw an ellipse."""
    ink, fill = self._getink(outline, fill)
    if fill is not None:
        self.draw.draw_ellipse(xy, fill, 1)
    if ink is not None:
        self.draw.draw_ellipse(xy, ink, 0)

所以,self.draw.draw_ellipse()椭圆()调用方法,好的,很好.但是draw_ellipse(...)是在哪里定义的?那里发生了什么魔法?我搜索了整个PIL目录树(甚至整个python树.),提到draw_ellipse的唯一两个地方就在省略()方法定义中.我甚至在调试器中试过一步一步地完成它,我仍然感到“麻烦”:-)关于在引擎盖下发生了什么。

我遗漏了什么??

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-26 13:10:32

draw_ellipse是在_imaging.c文件中定义的。请看下面的内容。

imaging.c

由于代码是用c++编写的(可能是为了提高库的性能),而且您只有一个已编译的PIL包,所以您无法看到原始代码。编译后的文件名以_imaging.cpy.~开头。在我的环境中,它是_imaging.cpython-36m-darwin.so

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47495340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档