私は画面上に表示する必要がある写真を回転しようとしています。これらの写真はスタックレイアウトの中にあり、風景の代わりに肖像画として表示する必要があります。ウィジェット ありがとうKivy写真を回転する方法
答えて
と混同取得する前に、私はこれを明確にしていますが、私はむしろそれのための新しいウィジェットを作成し、それを使用します。
Builder.load_string('''
<RotatedImage>:
canvas.before:
PushMatrix
Rotate:
angle: root.angle
axis: 0, 0, 1
origin: root.center
canvas.after:
PopMatrix
''')
class RotatedImage(Image):
angle = NumericProperty()
次に、このウィジェットを他のイメージウィジェットとして使用してください。プレイできる「アングル」プロパティがあります。
注:散乱検出を除き、衝突検出は画像上では処理されません。スキャッタは何かを回転させるためだけに高価になることがありますが、少なくとも衝突は機能します。
私はこれを行う方法は2つあると思います。私は2つの答えを掲示し、他者には正しいアプローチが何かを決定させます。私は個人的には、このメソッドを好む。しかし、それは直感的ではありません
このメソッドは、RelativeLayoutと2つのコンテキスト命令(回転と変換)を使用します。
1 - 画像をRelativeLayoutに埋め込む必要があります。どうして?回転の仕方は、(0,0)座標、つまり左下隅に釘を置くのと似ています。 RelativeLayoutは、0,0をウィジェットの位置に設定します。あなたは私が前に言ったようにcanvas
、3-を使用する必要があります
2-、ローテート命令は、座標(0,0)に釘を置くことと等価です。紙を考えてみてください。コーナーに釘を掛けると、回転は左に終わります。したがって、回転の前に、あなたはTranslateあなたの右に紙の部分をする必要があります。
4-今ではRotate RelativeLayoutと期待される位置で終了します。
RelativeLayoutを使用するもう1つの利点があります。それには、回転、スケーリング、または翻訳を広範囲に扱っている場合には、2つの重要な指示(PushMatrixおよびPopMatrix)が必要です。ここで
はサンプルコードです:
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()
私はScatterは、このための使用であることを意味するとは思いません。しかし、私はもっと直感的な解決策だと思います。 Scatterには、回転(およびスケール)プロパティが含まれています。
基本的には、ImageをScatterに埋め込み、rotationプロパティを使用して90度回転させました。
Scatterはこのタスクの対象ではありません。基本的にはジェスチャーを許すからです。基本的には、指で変換、回転、または拡大縮小することができます(または、multi-touch mouse emulationを使用)。そのため、次の例ではdo_scale
,do_rotation
およびdo_translation
をfalseに設定しています。あなたがtoto_ticoの前の2の回答を行うための方法ですdo_rotation: false
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
Scatter:
pos: 0,0
size_hint: None,None
size: 64,64
do_rotation: False
do_scale: False
do_translation: False
rotation: 90
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()
- 1. kivyのタッチイベントでオブジェクトを回転する
- 2. 写真を撮る方法、Androidで写真を保存する方法
- 3. jpeg写真からpng写真を作成する方法
- 4. javascriptを使用して3d写真を回転
- 5. Kivy:クリック可能な画像を回転
- 6. 写真と写真を同期させる方法
- 7. 写真を白黒にする方法
- 8. AppEngineに写真をアップロードする方法
- 9. 回転しているスマートフォンから写真をアップロードしていますか?
- 10. 編集のためにフォトライブラリから選んだ写真を回転する方法
- 11. 写真と写真の説明をアップロードする方法iphoneアプリで一緒に?
- 12. 写真の情報を取得する方法写真ライブラリのiphoneから?
- 13. ユーザーが写真をアップロードして写真を表示し、その写真をangularjsの写真に追加する方法は?
- 14. iPhoneカメラの写真が回転しています - CGAffineTransformInvert:特異行列
- 15. スケッチ(絵)の顔写真をデジタルカラー写真
- 16. iPhone APIで写真を撮ってサーバーに転送する
- 17. 挿入画像、方法写真は
- 18. 写真ライブラリの統合方法
- 19. C#数学問題 - 回転写像?
- 20. 1回のリクエストで投稿と写真をリクエストする
- 21. オフラインで写真をウェブサーバから写真でアップロードする
- 22. Facebookの写真の写真アルバムを取得する
- 23. 写真ライブラリからの写真
- 24. &写真
- 25. 写真
- 26. 回転divをオーバーフローテーブルセルにする方法
- 27. OpenCVでビデオを回転する方法
- 28. TextViewを回転する方法
- 29. ATL :: CImageオブジェクトを回転する方法
- 30. ハードドライブ(バッチファイル)からすべての写真をコピーする方法
+1原点プロパティの+1 –
おかげで、後で試してみると、最高の解決策と思われます。あなたの助けに感謝します。私はまだフレームワークの仕組みについて何か不足しています。 – nukedbit
常に重要ですオブジェクト指向にする。ありがとう。 – ehsan88