2010-09-28 37 views

Trả lời

11

Bạn không nói mục đích của việc này là gì và có một số cách để nhận biểu tượng và một phương pháp có thể tốt hơn cách khác tùy thuộc vào mục đích.

Tuy nhiên, để trích xuất bất kỳ số lượng "lớn" (32x32) và/hoặc (16x16) biểu tượng "nhỏ" * từ một tập tin tùy ý, sử dụng ExtractIconEx chức năng. Điều này cho phép bạn trích xuất một hoặc nhiều biểu tượng của một trong hai kích thước tiêu chuẩn này từ tệp biểu tượng (.ico), EXE hoặc DLL. Một tập tin biểu tượng có thể chứa nhiều hình ảnh và chức năng này sẽ cho phép bạn có được tất cả chúng.

Hàm sẽ ghi vào một dãy các chốt, mỗi chức năng mà bạn có thể gán cho thuộc tính Handle của một cá thể TIcon. Sau đó, bạn có thể sử dụng TIcon methods như bình thường nếu bạn đã tải TIcon theo bất kỳ cách nào khác. Lưu ý rằng mới để Delphi XE là khả năng sao chép nó một cách dễ dàng để một bitmap via the Assign method. That article cũng cho biết cách truy cập tất cả biểu tượng Windows (inbuilt/standard) Windows, nếu điều đó xảy ra là những gì bạn đang theo dõi.

(Ghi chú bên: Tôi nghĩ rằng lớp TIcon cho phép bạn tải từ tệp qua phương thức LoadFromFile - điều này dường như bị thiếu trong tài liệu, nhưng tôi chắc chắn nó tồn tại. Từ bộ nhớ, chỉ tải một icon)

(*) Trên thực tế, "lớn" và "nhỏ" có thể thể khác nhau để 32x32 và 16x16:. sử dụng chức năng GetSystemMetrics với SM_CXICON, SM_CYICON, SM_CXSMICON, và SM_CYSMICON cờ đến f chỉ ra kích thước của mỗi loại.

+0

@David, cảm ơn bạn! Tôi có đối tượng TIcon và tôi cần phải trích xuất tất cả các hình ảnh từ nó. Có cách nào để làm điều đó mà không lưu biểu tượng để tập tin thông qua phương pháp SaveToFile? – Branko

+0

TIcon sẽ là một hình ảnh biểu tượng. Sử dụng 'ExtractIconEx' bạn sẽ tạo ra một TIcon cho mỗi hình ảnh biểu tượng mà nó trích xuất. Sau đó, bạn có thể truy cập vào hình ảnh của biểu tượng bằng cách 'Gán'-ing nó vào một bitmap. Hãy thử gọi 'ExtractIconEx' hai lần, lần đầu tiên với' nIconIndex' được đặt thành -1 và cả hai tham số mảng 'nil', và nó sẽ trả về số biểu tượng. Xem các bài viết MSDN cho nó để biết thêm chi tiết.) –

+0

@David, TIcon là một biểu tượng hình ảnh nếu nó thu được bởi ExtractIconEx, nhưng nếu đối tượng TIcon hiện có có nhiều hơn một hình ảnh. Nếu tôi lưu TIcon với 4 hình ảnh để tập tin (oIcon.SaveToFile) và mở tập tin này với IconEditor tôi có thể xem tất cả 4 hình ảnh và tôi có thể trích xuất tất cả 4 hình ảnh với ExtractIconEx. Có thể trích xuất tất cả các hình ảnh từ đối tượng TIcon, không lưu TIcon vào tệp và sử dụng ExtractIconEx không? – Branko

Các vấn đề liên quan