TSpeedButtons của Delphi 2010 dường như không hỗ trợ PNG rõ ràng, vì thuộc tính Glyph sử dụng TBitmap bên trong và TBitmap dành cho bitmap và không hỗ trợ PNG minh bạch đúng cách, và TSpeedButton.Glyph không thể hỗ trợ minh bạch sau đó .. cập nhật: Nhưng vấn đề thực tế là tôi đã có một số công cụ bên ngoài (Developer Express thành phần) đã được rendering hỗ trợ PNG delphi của không chức năng, TImage mặt khác, trong khi nó vẫn TPicture, và có thể hỗ trợ PNG, cũng bị ảnh hưởng bởi lỗi phát triển này.Điều khiển nút và thay thế cơ bản cho TBitmap xử lý chính xác độ trong suốt của PNG mà không cần viết mã pha trộn
Câu hỏi đã được hỏi về here và câu trả lời cho biết cách sử dụng trộn trước để độ trong suốt không biến thành pixel đen. Tôi muốn biết nếu có một nút điều khiển khác sẽ sử dụng PNG trộn alpha được tải tại designtime và không chuyển đổi tài nguyên PNG sang định dạng BMP loại bỏ kênh alpha và làm viền đen hiển thị ở đây.
Tóm lại, điều khiển này sẽ không sử dụng TBitmap và sẽ không sử dụng tính năng trong suốt màu chính là tất cả TBitmap có.
Để lặp lại, tôi không hỏi cách giải quyết vấn đề màu đen xung quanh bên ngoài trong khi vẫn sử dụng chức năng VCL dựa trên TBitmap/TSpeedButton cũ, vì nó thiếu chức năng minh bạch PNG hiện đại, tôi đang hỏi về việc thay thế nó bằng thứ gì đó khác "chỉ hoạt động".
Là một hạn chế thứ hai, chuyển đổi tệp .png nhỏ thành tài nguyên bitmap .DFM về cơ bản đang lãng phí dung lượng và làm cho biểu mẫu của tôi có nội dung .DFM quá lớn. Lưu trữ định dạng tệp .png gốc trong tệp .dfm sẽ làm cho các biểu mẫu kết quả nhỏ hơn.
Cập nhật: PngComponents trông giống như họ nên làm việc, nhưng tôi đã nhận ra lỗi Invalid Graphic format
khi tôi cố gắng tải một png vào speedbutton Png. Lưu ý rằng thành phần danh sách hình ảnh Png không có vấn đề như vậy. Có vẻ như cxLibrary (một gói phát triển nhanh) đang phá vỡ mọi thứ. Khi tôi đã xóa tất cả nội dung của nhà phát triển, vấn đề này sẽ biến mất. Vì vậy, mặc dù tôi đã chọn Pngcomponents làm câu trả lời, nếu bạn đã cài đặt công cụ devex, hãy sử dụng các nút của chúng thay vào đó chứ không phải pngcomponents.
Nếu bạn không muốn đặt hình ảnh trong dfm thì đừng tải chúng dưới dạng tài nguyên. Đây là cách tiếp cận hợp lý duy nhất trong quan điểm của tôi. Nếu bạn đặt tài sản của bạn trong các tập tin dfm sau đó bạn mất khả năng giữ tài sản trong kiểm soát sửa đổi. –
Tại sao bạn không đặt PNG của mình vào tệp .ico và tải chúng vào danh sách hình ảnh khi chạy? –
P.S. Hy vọng công việc mới đang làm việc cho bạn! –