<p>我认为这是两种方式。我会发布两个答案,让其他人决定什么是正确的方法。我个人更喜欢这种方法,因为我认为它的计算量更轻。然而,这并不是那么直观</p>
<p>此方法使用一个RelativeLayout和两个上下文指令(Rotate和Translate)。</p>
<p>1-您需要将图像嵌入到<a href="http://kivy.org/docs/api-kivy.uix.relativelayout.html" rel="nofollow">RelativeLayout</a>中。为什么?因为Rotate的工作方式类似于在(0,0)坐标系中放置钉子,即左下角。<a href="http://kivy.org/docs/api-kivy.uix.relativelayout.html" rel="nofollow">RelativeLayout</a>将0,0设置为小部件的位置。</p>
<p>2-您需要使用<a href="http://kivy.org/docs/guide/graphics.html" rel="nofollow">canvas</a></p>
<p>3-如我之前所说,旋转指令相当于在(0,0)坐标中放置一个钉子。想想一张纸。如果你在拐角处钉一个钉子,旋转将在左边结束。所以,在旋转之前,你需要<a href="http://kivy.org/docs/api-kivy.graphics.context_instructions.html#kivy.graphics.context_instructions.Translate" rel="nofollow">Translate</a>右边的那张纸。</p>
<p>4-现在你可以<a href="http://kivy.org/docs/api-kivy.graphics.context_instructions.html#kivy.graphics.context_instructions.Rotate" rel="nofollow">Rotate</a>相对论时间,它将以你期望的位置结束。</p>
<p>使用相对延迟还有一个优点。它已经包含了两个重要的指令(<a href="http://kivy.org/docs/api-kivy.graphics.context_instructions.html#kivy.graphics.context_instructions.PushMatrix" rel="nofollow">PushMatrix</a>和<a href="http://kivy.org/docs/api-kivy.graphics.context_instructions.html#kivy.graphics.context_instructions.PopMatrix" rel="nofollow">PopMatrix</a>),如果您正在广泛地使用旋转、缩放或平移,则必须理解这两个指令。</p>
<p>下面是一个示例代码:</p>
<pre><code>from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.lang import Builder
Builder.load_string("""
<Example>:
Image:
source: 'kivy.png'
size_hint: None,None
size: 64,64
RelativeLayout
size_hint: None,None
size: 64,64
canvas.before:
Translate:
x: 64
Rotate:
angle: 90
axis: 0,0,1
Image:
source: 'kivy.png'
size_hint: None,None
size: 64,64
""")
class Example(App, StackLayout):
def build(self):
return self
if __name__ == "__main__":
Example().run()
</code></pre>