Vì vậy, những gì tôi đang cố gắng làm là tạo ra một hình nền cho trò chơi của tôi bằng cách vẽ các hình thu nhỏ cho một kết cấu. Cho đến nay tôi có thể làm điều đó, nhưng bây giờ tôi cần phải vẽ các pixmaps lộn xộn trong trục X hoặc Y để kết cấu. Tuy nhiên tôi không thể tìm thấy bất cứ điều gì để làm như vậy. Lớp pixmap không cung cấp chức năng đó. Sau đó, tôi nghĩ rằng tôi có thể vẽ một khu vực kết cấu lật đến một kết cấu, nhưng cho đến nay tôi đã không tìm thấy làm thế nào để làm như vậy. Vì vậy, tôi đã tự hỏi làm thế nào tôi có thể làm một điều như vậy, nó sẽ có thể lật một hình ảnh png với các thư viện java khác và sau đó tạo ra một pixmap từ đó lật hình ảnh?làm thế nào để lật một pixmap để vẽ một kết cấu trong libgdx?
10
A
Trả lời
7
Tôi cũng không thấy tùy chọn khác ngoài việc lặp các điểm ảnh:
public Pixmap flipPixmap(Pixmap src) {
final int width = src.getWidth();
final int height = src.getHeight();
Pixmap flipped = new Pixmap(width, height, src.getFormat());
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
flipped.drawPixel(x, y, src.getPixel(width - x - 1, y));
}
}
return flipped;
}
0
Dưới đây là một giải pháp mà không đòi hỏi sự sáng tạo của một pixmap mới. Mã này cũng có thể được sửa đổi để lật Pixmap theo chiều ngang và theo chiều dọc bằng cách hoán đổi các góc của hình ảnh pixmap thay vì đổi pixel ở các cạnh đối diện của hình ảnh.
public static void flipPixmap(Pixmap p){
int w = p.getWidth();
int h = p.getHeight();
int hold;
//change blending to 'none' so that alpha areas will not show
//previous orientation of image
p.setBlending(Pixmap.Blending.None);
for (int y = 0; y < h/2; y++) {
for (int x = 0; x < w/2; x++) {
//get color of current pixel
hold = p.getPixel(x,y);
//draw color of pixel from opposite side of pixmap to current position
p.drawPixel(x,y, p.getPixel(w-x-1, y));
//draw saved color to other side of pixmap
p.drawPixel(w-x-1,y, hold);
//repeat for height/width inverted pixels
hold = p.getPixel(x, h-y-1);
p.drawPixel(x,h-y-1, p.getPixel(w-x-1,h-y-1));
p.drawPixel(w-x-1,h-y-1, hold);
}
}
//set blending back to default
p.setBlending(Pixmap.Blending.SourceOver);
}
Các vấn đề liên quan
- 1. Libgdx làm thế nào để lật một BitmapFont?
- 2. Làm thế nào để vẽ một BitmapFont trong LibGDX?
- 3. làm thế nào để vẽ hình dạng tùy chỉnh bằng cách sử dụng một kết cấu đơn giản trong libgdx?
- 4. Làm thế nào để lật một sprite/texture trong OpenGLES?
- 5. làm thế nào để vẽ các đường lưới với libgdx
- 6. Vẽ một BitmapFont được xoay trong libgdx
- 7. LIBGDX: Làm thế nào để vẽ một đa giác được tô đầy bằng shaperenderer?
- 8. jquery làm thế nào để làm một hiệu ứng lật?
- 9. vẽ một kết cấu pixelated
- 10. LibGDX tạo kết cấu từ base64 PNG ByteArrayInputStream
- 11. Làm cách nào để vẽ văn bản bằng Libgdx/Java?
- 12. Hình ảnh kết cấu libgdx trong suốt hiển thị
- 13. Làm thế nào để điền vào kết cấu trong cocos2d?
- 14. Làm thế nào để lật tọa độ khi vẽ trong ngữ cảnh?
- 15. Libgdx - Làm thế nào để vẽ hình chữ nhật đầy ở đúng nơi trong scene2d?
- 16. Làm thế nào để vẽ một đồ thị trong PHP?
- 17. Làm thế nào để vẽ một vòng tròn trong suốt?
- 18. Làm thế nào để vẽ một lưới trong SketchFlow?
- 19. Làm thế nào để vẽ một nền nhanh trong cocos2d?
- 20. libgdx SpriteBatch hiển thị kết cấu
- 21. Làm thế nào để vẽ trên một JLabel?
- 22. Làm thế nào để lưu trữ một cấu trúc bên trong một cấu trúc trong đi?
- 23. Làm thế nào để chuyển sang một nhánh phụ lật khác trong Intellij?
- 24. Làm thế nào để vẽ một đường subpixel
- 25. Làm thế nào để vẽ một UILabel in -drawRect :?
- 26. Làm thế nào để vẽ một MKPolyline trên MapView?
- 27. Làm thế nào để lật một JFrame và các con của nó lộn ngược?
- 28. (Java LibGDX) Làm cách nào để thay đổi kích thước họa tiết của tôi trong LibGDX?
- 29. Làm thế nào để vẽ một hình elip đầy đủ trong một StreamGeometry trong WPF?
- 30. Làm thế nào để animate bản vẽ của một CGPath?
Nhớ vứt bỏ Pixmap gốc –
Thx! Btw, nếu bạn muốn lật trên trục Y thay vì bạn chỉ cần thực hiện 'flipped.drawPixel (x, y, src.getPixel (x, height - y - 1));'. – Sawny
Chỉ trong trường hợp bạn cần xoay một bản đồ pixmap 90 độ: Tôi đã tạo ra một phương pháp để làm điều này lấy cảm hứng từ ý tưởng của bạn, xem http://stackoverflow.com/a/34362685/2399024 – donfuxx