Tôi đang phát triển một ứng dụng Android làm méo mó hình ảnh. Tôi đang sử dụng tính năng dịch và chỉnh tỷ lệ để làm biến dạng hình ảnh. Ảnh bị bóp méo. Tôi muốn triển khai tính năng hoàn tác. Nhưng không thể thực hiện các chức năng. Bất kỳ ai có thể giúp làm thế nào để thực hiện chức năng hoàn tác trong opengl. Bất kỳ đề nghị hoặc mã sẽ hữu ích. Cảm ơn trước.cách triển khai chức năng hoàn tác trong opengl trong android
Trả lời
Ray Tayek là đúng. Sử dụng mẫu lệnh. Tức là, đối với mọi hành động mà người dùng thực hiện, bạn đẩy hành động đó (lệnh) và bất kỳ dữ liệu nào liên quan đến hành động đó trên ngăn xếp Hoàn tác.
Hãy xem xét chương trình vẽ để đơn giản. Quy trình này có thể áp dụng trực tiếp cho ứng dụng OpenGL của bạn. Người dùng vẽ một đường từ x1, y1 đến x2, y2. Lệnh có thể được biểu diễn như sau:
command = DrawLine
data = x1, y1, x2, y2
Có thể bạn cần ít nhất hai lớp cho dữ liệu Hoàn tác, nhưng chúng sẽ được triển khai nhỏ và dễ dàng. Khi người dùng muốn hoàn tác, chỉ cần bật đối tượng trên cùng ra khỏi ngăn xếp Hoàn tác, xem nó và thực hiện hành động hoàn tác liên quan (cụ thể cho từng loại lệnh). Hoặc, bạn thậm chí có thể bao gồm hành động hoàn tác trong từng đối tượng lệnh. Sau đó, đẩy lệnh hoàn tác trên ngăn xếp Làm lại.
Điều này là đủ để bạn bắt đầu. HTH
Tôi sửa đổi câu trả lời ở trên. Đối với đồ họa 3D, DwB có một cách tiếp cận tốt. Sử dụng hình ảnh chưa được sửa đổi như một phần của dữ liệu Hoàn tác của bạn. – Frecklefoot
Tôi nghi ngờ rằng mẫu lệnh không đủ cho trường hợp của bạn. Điều này được dựa trên giả định của tôi là không dễ dàng để đảo ngược biến dạng hình ảnh ngay cả khi bạn biết sự biến dạng đã được áp dụng.
Thay vào đó, có thể bạn sẽ cần phải đẩy hình ảnh lên ngăn xếp ngay trước khi áp dụng méo. Sau đó, triển khai hoàn tác sẽ thay thế hình ảnh hiện tại bằng hình ảnh trên ngăn xếp. Điều này sẽ dẫn đến các vấn đề tiềm tàng thú vị do kết hợp làm lại và hoàn tác.
Bạn có thể tối ưu hóa đối tượng lệnh lưu trữ này để thay đổi dễ dàng đảo ngược và lưu trữ hình ảnh cho những thay đổi không dễ dàng đảo ngược.
- 1. Làm cách nào để triển khai chức năng hoàn tác?
- 2. Làm cách nào để triển khai hoàn tác trong ứng dụng vẽ OpenGL ES trên iPhone?
- 3. Hoàn tác triển khai - Thao tác DOM
- 4. Cách triển khai chức năng Excel Solver trong C#?
- 5. Muốn triển khai Timeout cho một chức năng trong C
- 6. Cách triển khai onMenuItemClickListener trong android
- 7. Cách triển khai Android 4.0 như vuốt để bỏ qua chức năng trong ListView?
- 8. Cách tốt nhất để triển khai kiểu gmail "hoàn tác" trong Rails là gì?
- 9. Chức năng PBKDF2 trong Android
- 10. cách triển khai Rate Us trong android
- 11. Cách triển khai trợ năng trong java
- 12. Khó triển khai chức năng làm lại NSUndoManager
- 13. Cách triển khai cử chỉ vuốt trong android
- 14. cách triển khai hoạt động hoàn tác/làm lại mà không có thay đổi lớn trong chương trình
- 15. Làm cách nào để triển khai đúng chức năng "thu nhỏ đến khay" trong Qt?
- 16. Hoàn tác và làm lại trong Canvas cho Android
- 17. khai C chức năng trong một chức năng
- 18. Heap mềm hoàn toàn chức năng
- 19. Làm cách nào để triển khai chức năng 'Nhớ thông tin đăng nhập của tôi' trong Hoạt động trên Android?
- 20. Làm cách nào để triển khai hoàn tác đơn giản/làm lại cho các hành động trong java?
- 21. Asp.net: Triển khai chức năng Tự động đăng xuất
- 22. Làm thế nào để lập trình mã một chức năng 'hoàn tác' trong Excel-Vba?
- 23. Làm cách nào để triển khai chức năng awt.CardLayout trong ứng dụng javaFX 2.0 của tôi?
- 24. Làm cách nào để triển khai Chức năng tìm kiếm trong một trang web?
- 25. Cách triển khai chức năng tắt tiếng trong cuộc gọi PJSIP trên iOS
- 26. Thực hiện chức năng Traceroute trong android
- 27. Chức năng OpenCV SURF không được triển khai
- 28. Triển khai Django Celery - OSError: [Errno 38] Chức năng không được triển khai
- 29. Bộ chức năng thông minh hoàn toàn
- 30. Cách triển khai menu "Chỉnh sửa" với "Hoàn tác", "Cắt", "Dán" và "Sao chép"?
Điều này không liên quan gì đến OpenGL. OpenGL chỉ vẽ những gì bạn yêu cầu nó vẽ. Bất kỳ chức năng hoàn tác nào là về việc thay đổi những gì bạn yêu cầu nó vẽ để trở thành những gì nó từng là. –
@NicolBolas thực sự tôi đang bóp méo hình ảnh khi chạm ngón tay. Hình ảnh co lại hoặc phồng lên. Câu hỏi đặt ra là, những gì tôi nên lưu trữ và làm thế nào để phản ánh nó trên quan điểm. –
Tôi tin rằng bạn nên lưu trữ hình ảnh hiện tại trên mỗi lần bắt đầu chạm. Sau đó, khi hoàn tác được thực hiện, chỉ cần thả hình ảnh hiện tại và thay thế nó bằng hình ảnh cuối cùng trong hàng đợi. Một số hoạt động có thể được đảo ngược bằng cách sử dụng opengl, nhưng tôi không nghĩ rằng bạn nên sử dụng các tính năng như vậy ở đây. Chỉ cần lưu trữ bản gốc và mỗi thao tác bạn đã thực hiện bằng ngón tay hoặc hình ảnh cho mỗi bước. – Pihhan