ImageDraw.Draw 三角形
时间: 2023-08-25 11:26:41 浏览: 388
使用Python中的Pillow库可以绘制三角形。以下是使用ImageDraw.Draw绘制三角形的示例代码:
```python
from PIL import Image, ImageDraw
# 创建一个空白的图像
img = Image.new('RGB', (200, 200), color='white')
# 创建一个绘图对象
draw = ImageDraw.Draw(img)
# 绘制三角形
draw.polygon([(100, 20), (20, 180), (180, 180)], fill='red', outline='black')
# 显示图像
img.show()
```
在上述代码中,我们首先创建了一个200x200的空白图像,然后创建了一个绘图对象draw。接下来,我们使用draw.polygon()方法绘制了一个三角形,该方法接受一个点列表作为参数。最后,我们使用img.show()方法显示了绘制好的图像。
相关问题
ImageDraw.Draw绘制polygon
在Python中,我们也可以使用PIL库(Python Imaging Library)的ImageDraw模块来绘制多边形。下面是一个简单的例子:
```python
from PIL import Image, ImageDraw
# 创建一个大小为640x480的空白图像
image = Image.new('RGB', (640, 480), (255, 255, 255))
# 创建一个ImageDraw对象
draw = ImageDraw.Draw(image)
# 定义三角形的顶点
vertices = [(320, 50), (100, 400), (540, 380)]
# 绘制三角形
draw.polygon(vertices, fill=(255, 0, 0))
# 显示图像
image.show()
```
在这个例子中,我们首先创建了一个大小为640x480的空白图像,并创建了一个ImageDraw对象 `draw`。然后,我们定义了一个由三个顶点组成的列表 `vertices`,并使用 `draw.polygon()` 方法来绘制三角形。最后,我们使用 `image.show()` 方法来显示绘制的图像。
需要注意的是,PIL库中的ImageDraw模块使用的是RGB颜色模式,因此需要使用 `(255, 0, 0)` 这样的元组来表示红色。如果要绘制透明的多边形,可以将 `fill` 参数设置为一个带有四个值的元组,例如 `(255, 0, 0, 128)` 表示半透明的红色。
用python为小朋友设计一个绘图学习软件,要求: 给出绘图菜单 如: 1.圆形 2. 倒三角形 3. 五角星⋯...等 2. 小朋友输入菜单编号,绘制相应的图形,图形绘制完毕窗口关闭#了.输入错误编号则给出输入错误提示 4.程序运行流畅,界面交互性好
设计这样一个绘图学习软件,我们可以使用Python的Tkinter库来创建简单的图形用户界面,并结合PIL库来画图。以下是简化的实现步骤:
1. 导入所需的库:
```python
import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageDraw
```
2. 创建主窗口和绘图区域:
```python
root = tk.Tk()
canvas = tk.Canvas(root, width=600, height=400)
canvas.pack(pady=20)
```
3. 定义绘制函数,对应每个图形:
```python
def draw_circle():
draw = ImageDraw.Draw(canvas.create_image(0, 0, anchor="nw"))
draw.ellipse((50, 50, 350, 350), fill='blue')
root.withdraw()
def draw_triangle():
# ...(类似地添加倒三角形和五角星的绘制)
# 初始化一个字典存储图形对应的绘制函数
shapes = {
'1': draw_circle,
'2': draw_triangle,
# 添加更多形状...
}
```
4. 设置绘图菜单:
```python
menu_bar = tk.Menu(root)
file_menu = tk.Menu(menu_bar, tearoff=0)
menu_bar.add_cascade(label="绘图", menu=file_menu)
for i, shape in enumerate(shapes.keys(), start=1):
file_menu.add_command(label=f"{i}. {shape}", command=lambda n=shape: shapes[n]())
file_menu.add_separator()
file_menu.add_command(label="退出", command=root.quit)
root.config(menu=menu_bar)
```
5. 处理用户输入并显示错误消息:
```python
def input_handler(event):
try:
choice = int(event.widget.get())
if choice in shapes:
shapes[str(choice)]()
else:
messagebox.showerror("错误", "输入的编号无效,请选择正确的图形!")
except ValueError:
messagebox.showerror("错误", "请输入有效的数字!")
input_field = tk.Entry(root)
input_field.bind("<Return>", input_handler)
input_field.grid(row=0, column=0)
```
6. 运行程序:
```python
root.mainloop()
```
阅读全文