Tôi đang cố gắng xoay một số hình ảnh tôi phải hiển thị trên màn hình, những hình ảnh này nằm trong một chồng xếp chồng và tôi cần hiển thị chúng dưới dạng Chân dung thay vì phong cảnh, tôi đang sử dụng Hình ảnh Tiện ích Cảm ơnKivy cách xoay ảnh
Trả lời
2 câu trả lời trước của toto_tico là một cách để làm, nhưng tôi thà tạo một widget mới cho nó, và sử dụng nó:
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()
Sau đó, sử dụng tiện ích con này làm tiện ích Hình ảnh khác, bạn chỉ có thuộc tính "góc" mà bạn có thể chơi cùng.
Lưu ý: phát hiện va chạm không được xử lý trên hình ảnh, ngoại trừ trong ví dụ phân tán. Scatter có thể tốn kém chỉ để xoay một cái gì đó, nhưng ít nhất là va chạm hoạt động.
Tôi nghĩ rằng đó là hai cách để thực hiện việc này. Tôi sẽ đăng hai câu trả lời và cho phép người khác quyết định cách tiếp cận đúng là gì. Cá nhân tôi thích phương pháp này vì tôi nghĩ nó nhẹ hơn tính toán. Tuy nhiên, không phải là trực quan
Phương pháp này sử dụng lệnh RelativeLayout và hai lệnh ngữ cảnh (Xoay và Dịch).
1 - Bạn cần nhúng Hình ảnh bên trong RelativeLayout. Tại sao? Bởi vì cách Xoay hoạt động tương tự như đặt một đinh ở tọa độ (0,0), tức là góc dưới cùng bên trái. Các RelativeLayout đặt 0,0 đến vị trí của Widget.
2- Bạn sẽ cần phải sử dụng canvas
3 Như tôi đã nói trước đây, các hướng dẫn Rotate là tương đương để đặt một móng tay trong (0,0) phối hợp. Hãy suy nghĩ về một mảnh giấy. Nếu bạn đặt một đinh ở góc thì vòng quay sẽ kết thúc ở bên trái. Vì vậy, trước khi quay, bạn cần phải Translate mảnh giấy bên phải của bạn.
4- Bây giờ bạn có thể Rotate RelativeLayout và Nó sẽ kết thúc ở vị trí bạn mong đợi.
Có một lợi thế khác khi sử dụng RelativeLayout. Nó đã bao gồm hai hướng dẫn quan trọng (PushMatrix và PopMatrix) mà bạn phải hiểu nếu bạn đang làm việc rộng rãi với xoay, mở rộng hoặc dịch.
Dưới đây là một ví dụ mã:
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()
Tôi không nghĩ rằng Scatter có nghĩa là để được sử dụng cho việc này. Nhưng tôi đoán là một giải pháp trực quan hơn. Scatter bao gồm một thuộc tính xoay (và cũng là một quy mô).
Về cơ bản, tôi đã nhúng Hình ảnh bên trong một Phân tán và sử dụng thuộc tính xoay để xoay 90 độ.
Tại sao tôi nói Scatter không có nghĩa là cho tác vụ này. Về cơ bản bởi vì nó cho phép cử chỉ trên nó. Về cơ bản, bạn có thể dịch, xoay hoặc chia tỷ lệ bằng ngón tay (hoặc sử dụng multi-touch mouse emulation). Đó là lý do tại sao trong ví dụ tiếp theo, tôi đang đặt do_scale
, do_rotation
và do_translation
thành sai. Tôi đang làm rõ điều này trước khi bạn nhận được nhầm lẫn với các 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. Truyền đối tượng hình ảnh làm nền nút trong Kivy
- 2. Xoay ảnh. Danh sách hoạt ảnh hoặc xoay động? (Android)
- 3. cách xoay hình ảnh trong QGraphicsView
- 4. Làm cách nào để xoay hình ảnh?
- 5. Java: Xoay ảnh
- 6. Xoay hình ảnh kém
- 7. Cách xoay hình ảnh và lưu hình ảnh
- 8. Xoay ảnh trong Qt
- 9. Xoay hoạt ảnh android
- 10. Java - Xoay ảnh
- 11. Xoay hình ảnh trong UIImageView
- 12. Xoay hình ảnh trong Eclipse
- 13. Xoay hình ảnh trong java
- 14. Xoay ảnh trong C/C++
- 15. Xoay khuôn mặt trong ảnh
- 16. jquery xoay hình ảnh onclick
- 17. Xoay hình ảnh trong android
- 18. xoay 3D trên hình ảnh
- 19. Three.js - Tạo hoạt ảnh xoay?
- 20. Vẽ SVG trên vải Kivy
- 21. lỗi triển khai iOS kivy
- 22. Tiện ích chọn ngày Kivy
- 23. Làm thế nào để xoay hình ảnh bằng cách sử dụng jquery xoay plugin?
- 24. kivy: python cho android + C++
- 25. Làm cách nào để xoay ảnh trong WinForms
- 26. xoay hình ảnh 3D bằng cách sử dụng javascript
- 27. Xoay máy ảnh trong Three.js bằng chuột
- 28. OpenGL xoay máy ảnh quanh một điểm
- 29. Android xoay ảnh 90 độ (chụp bằng máy ảnh)
- 30. HTML5 xoay hình ảnh bằng canvas
+1 cho thuộc tính gốc –
Cảm ơn tôi sẽ thử sau, có vẻ như giải pháp tốt nhất, cảm ơn sự giúp đỡ của bạn, tôi khá mới với kivy tôi vẫn nhớ điều gì đó về cách hoạt động của khung công tác :) – nukedbit
Điều quan trọng là luôn luôn để được hướng đối tượng. Cảm ơn. – ehsan88