Tôi đang làm việc trên một dự án bao gồm một số ứng dụng Delphi được biên dịch (hơn 20 exe và dll) và tôi sẽ cần chia sẻ hơn 60 hình ảnh (16x16, 24x24, 32x32 , ...) giữa tất cả chúng.Cách tốt nhất để chia sẻ hình ảnh giữa một số ứng dụng
Tôi đã mặc dù trên hai cách khác nhau để chia sẻ hình ảnh giữa tất cả các ứng dụng, nhưng tôi không chắc chắn đó là tốt hơn:
Idea 1:
Tạo một thốn chỉ dự án DLL, chứa tham chiếu liên kết tài nguyên tới tệp .res chứa tất cả hình ảnh của tôi. Mỗi ứng dụng sẽ lần lượt tải các dll và đọc những hình ảnh cần thiết nó có thể cần vào một TImageList hoặc TImage tùy thuộc vào nhu cầu của nó.
Ưu điểm: Cho phép giữ hình ảnh trong kho ở định dạng gốc.
Nhược điểm: Tôi sẽ không thể xem hình ảnh tại thời điểm thiết kế vì chúng sẽ chỉ được tải vào thời gian chạy. Tôi cũng sẽ phải tạo cùng một số hằng số vì có hình ảnh hoặc sử dụng tập hợp có cùng số giá trị vì có hình ảnh sao cho mỗi hình ảnh có thể được tham chiếu độc lập với tên của nó trên tệp tài nguyên.
Idea 2:
Tạo một Module Dữ liệu được biên soạn như một bpl và bao gồm như là một gói thời gian chạy trên tất cả các ứng dụng. Tôi sẽ thêm các hình ảnh vào một số TImageList của (tùy thuộc vào kích thước hình ảnh) hoặc vào một TPngImageList (cho phép hình ảnh của một số kích cỡ trên một thành phần duy nhất).
Ưu điểm: Tôi sẽ có thể thêm Mô-đun dữ liệu này vào tất cả các ứng dụng tôi cần và xem tại thời điểm thiết kế tất cả hình ảnh tôi có thể cần sử dụng.
Nhược điểm: Tất cả hình ảnh sẽ được tải vào bộ nhớ ngay cả khi tôi chỉ cần sử dụng một hình ảnh. Tôi cần phải chắc chắn rằng thứ tự của hình ảnh không bao giờ thay đổi khi thêm/sửa đổi hình ảnh vào TImageList/TPngImageList. Tất cả các hình ảnh sẽ được lưu trữ trong một đơn .dfm.
Idea 3: (New)
Sau khi xem xét các ứng dụng khác, những người cũng cần phải chia sẻ hình ảnh giữa biên soạn của exe, tôi đã nêu ra một ý tưởng. Lưu tất cả hình ảnh được chia sẻ dưới dạng các tệp png/ico đơn giản trên thư mục con nơi các tệp được biên dịch là (Dữ liệu ví dụ).
Ưu điểm: Không cần tải tất cả hình ảnh vào bộ nhớ, tôi chỉ có thể tải những hình ảnh cần thiết. Điều này có thể đặc biệt quan trọng nếu tổng số hình ảnh là khá lớn (một ứng dụng sử dụng phương pháp này có 1400 hình ảnh trên một thư mục con Dữ liệu).
Nhược điểm: Hình ảnh sẽ hiển thị/khả dụng cho bất kỳ ai. Có thể sử dụng nhiều không gian đĩa hơn trên máy người dùng.
Tôi muốn hỏi ý kiến về hai ý tưởng này hoặc bất kỳ đề xuất nào khác về cách thực hiện tốt hơn điều này.
Cảm ơn!
Về ý tưởng 2: Bạn có thể giải phóng hình ảnh mà bạn không cần lúc chạy không? – Jeff
Tôi không nghĩ rằng tôi có thể dễ dàng giải phóng hình ảnh mà tôi không cần lúc chạy, chủ yếu là vì nếu tôi xóa những hình ảnh tôi không cần từ TImageList thì nó sẽ không có hình ảnh chính xác được gán cho bất kỳ điều khiển nào người sử dụng TImageList. – smartins