Điều tôi muốn làm là vẽ một hình ảnh ra màn hình, tại vị trí bạn chọn.Vẽ một phần hình ảnh thành màn hình (không tải tất cả vào bộ nhớ)
Tôi có thể dễ dàng tải mẫu này vào một bitmap. và sau đó vẽ một phần phụ.
Nhưng khi hình ảnh lớn, điều này rõ ràng sẽ làm cạn kiệt bộ nhớ.
Màn hình của tôi là bản xem lướt sóng. Vì vậy, có một canvas vv
Vậy làm cách nào tôi có thể vẽ một phần của hình ảnh, tại một độ lệch đã cho và thay đổi kích thước. Nếu không tải nguồn gốc vào bộ nhớ
Tôi tìm thấy câu trả lời phù hợp với các dòng bên phải, nhưng nó không hoạt động chính xác. Với việc sử dụng các drawables từ tập tin. Cố gắng mã dưới đây. Ngoài việc thay đổi kích thước ngẫu nhiên nó tạo ra, nó cũng không đầy đủ.
Ví dụ:
Drawable img = Drawable.createFromPath(Files.SDCARD + image.rasterName);
int drawWidth = (int) (image.GetOSXWidth()/(maxX - minX)) * m_canvas.getWidth();
int drawHeight = (int)(image.GetOSYHeight()/(maxY - minY)) * m_canvas.getHeight();
// Calculate what part of image I need...
img.setBounds(0, 0, drawWidth, drawHeight);
// apply canvas matrix to move before draw...?
img.draw(m_canvas);
Hãy xem 'BitmapRegionDecoder'. Hãy suy nghĩ điều này thực hiện chính xác những gì bạn đang tìm kiếm. – bobnoble
@bobnoble Cảm ơn bạn đã xem qua các javadocs, có vẻ như điều đó sẽ làm điều đó. Và khá thẳng về phía trước để sử dụng. – Doomsknight
Viết như một câu trả lời @bobnoble - nó hữu ích và sẽ tiếp tục cho những người khác. – Elemental