<p>如果你只想画一个任意角度的纯色正方形,可以用三角法计算旋转正方形的顶点,然后用<code>polygon</code>绘制。在</p>
<pre><code>import math
from PIL import Image, ImageDraw
#finds the straight-line distance between two points
def distance(ax, ay, bx, by):
return math.sqrt((by - ay)**2 + (bx - ax)**2)
#rotates point `A` about point `B` by `angle` radians clockwise.
def rotated_about(ax, ay, bx, by, angle):
radius = distance(ax,ay,bx,by)
angle += math.atan2(ay-by, ax-bx)
return (
round(bx + radius * math.cos(angle)),
round(by + radius * math.sin(angle))
)
image = Image.new('L', (100, 100), 127)
draw = ImageDraw.Draw(image)
square_center = (50,50)
square_length = 40
square_vertices = (
(square_center[0] + square_length / 2, square_center[1] + square_length / 2),
(square_center[0] + square_length / 2, square_center[1] - square_length / 2),
(square_center[0] - square_length / 2, square_center[1] - square_length / 2),
(square_center[0] - square_length / 2, square_center[1] + square_length / 2)
)
square_vertices = [rotated_about(x,y, square_center[0], square_center[1], math.radians(45)) for x,y in square_vertices]
draw.polygon(square_vertices, fill=255)
image.save("output.png")
</code></pre>
<p>结果:</p>
<p><a href="https://i.stack.imgur.com/zCidN.png" rel="noreferrer"><img src="https://i.stack.imgur.com/zCidN.png" alt="enter image description here"/></a></p>