2011-12-04 42 views
6

Tôi muốn chống bí danh một số bitmap trong Delphi. Tệp được tải từ tệp, được gán cho một hình ảnh, được xử lý (apply_kernel) và kết quả được gán cho một hình ảnh khác. Ở Delphi, pixel trái/dưới xác định màu trong suốt khi Image.Transparent = True. Tôi chỉ làm việc với bitmap 32 bit.Cách hiển thị một phần của bitmap trong suốt

dump ('henon.bmp'); 
Image3.Picture.LoadFromFile ('henon.bmp'); 
apply_kernel (Image3.Picture.Bitmap, bitmap, kernel); 
Image4.Picture.Bitmap := bitmap; 
Image4.Picture.Bitmap.SaveToFile ('alias.bmp'); 
dump ('alias.bmp'); 

Điều này hoạt động cho bitmap đã tải được chỉ định cho Image3, nhưng không áp dụng cho bitmap được tính cho Image4. Màu của trái/dưới vẫn không thay đổi (clWhite). Để hiểu điều gì xảy ra, tôi đổ các bitmap vào tập tin, mỗi màu riêng biệt (xem các bãi bên dưới). Tôi đã kiểm tra tính minh bạch của hình ảnh, tự động hóa là, như là trung tâm và căng ra, bitmap là 32x32, các hình ảnh quá. Tôi cũng đã cố gắng đặt TransparentColor := clWhite, không có kết quả. Tôi phải mắc một sai lầm rất ngu ngốc nhưng không thể tìm thấy nó. Ai đó có thể giúp tôi?

Chỉnh sửa Torbins nhắc tôi rằng tôi đã quên về byte dành riêng. Nó được đặt ở mức 128 tại một số vị trí, thực sự chính xác vị trí của các số 0 (xem kết xuất được cập nhật). Tôi đã làm một số điều mà cuối cùng dẫn đến một bitmap trong suốt: - chỉ cần zeroed tất cả các byte được bảo lưu. - một nhiều thêm nữa mà tất cả đã không làm việc cho đến khi - bằng cách sử dụng công trình assigment, Draw không hoạt động lạ lùng là, lý luận của Sertac dường như âm thanh

Nhưng dù sao, các mã mà làm việc là

dump ('henon.bmp'); 
Image3.Picture.LoadFromFile ('lorenz.bmp'); 
apply_kernel (Image3.Picture.Bitmap, bitmap, kernel); 
Image4.Picture.Bitmap.SetSize (bitmap.Width, bitmap.Height); 
// Image4.Picture.Bitmap.Canvas.Draw (0, 0, bitmap); // <== does not work 
Image4.Picture.Bitmap := bitmap;     // <== works 
bitmap.SaveToFile ('alias.bmp'); 
dump ('alias.bmp'); 

@Sertac, có lẽ tôi làm điều gì đó sai với Draw?

@Torbins, zeroing tất cả các byte dự trữ là khá thô lỗ, tôi sẽ thử nghiệm một số với đề nghị của bạn với các kênh alpha

Cảm ơn tất cả các bạn rất nhiều!

henon.bmp:

Red 
     0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     1: 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     2: 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     3: 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     4: 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     5: 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     6: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 
     7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 
     8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 
     9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 
     10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 0 0 0 255 255 255 255 255 
     11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 0 0 0 255 255 255 
     12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 0 0 255 255 255 
     13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 0 0 255 255 
     14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 0 0 255 
     15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 0 255 0 0 255 
     16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 255 
     17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 
     18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 0 255 
     19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 255 
     20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 0 255 255 255 
     21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 255 255 255 
     22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 
     23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 255 255 
     24: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 
     25: 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 
     26: 255 255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 
     27: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     28: 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     29: 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     30: 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 

    Green 
     0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     1: 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     2: 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     3: 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     4: 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     5: 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     6: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 
     7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 
     8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 
     9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 
     10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 0 0 0 255 255 255 255 255 
     11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 0 0 0 255 255 255 
     12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 0 0 255 255 255 
     13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 0 0 255 255 
     14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 0 0 255 
     15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 0 255 0 0 255 
     16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 255 
     17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 
     18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 0 255 
     19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 255 
     20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 0 0 255 255 255 
     21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 0 0 255 255 255 255 
     22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 
     23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 255 255 
     24: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 
     25: 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 
     26: 255 255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 
     27: 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     28: 255 255 255 255 255 255 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     29: 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     30: 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 

    Blue 
     0: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     1: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     2: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     3: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     4: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     5: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     6: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     7: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     8: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     22: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     23: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     24: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     25: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     26: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     27: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     28: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     29: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     30: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     31: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 


reserved 
    0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    1: 0 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    2: 0 0 0 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    3: 0 0 0 0 0 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    4: 0 0 0 0 0 0 0 0 128 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    5: 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    6: 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 
    7: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 0 
    8: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 128 128 0 0 0 0 0 0 0 0 0 
    9: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 128 128 128 0 0 0 0 0 0 
    10: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 128 128 128 0 0 0 0 0 
    11: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 128 128 128 0 0 0 
    12: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 128 128 0 0 0 
    13: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 0 128 128 0 0 
    14: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 128 128 0 
    15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 128 0 128 128 0 
    16: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 128 0 
    17: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 0 0 128 128 0 
    18: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 128 128 0 
    19: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 0 0 128 128 0 0 
    20: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 128 128 0 0 0 
    21: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 0 0 128 128 0 0 0 0 
    22: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 0 128 128 0 0 0 0 0 
    23: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 0 128 128 0 0 0 0 0 0 0 
    24: 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 0 0 0 0 0 0 128 128 0 0 0 0 0 0 0 0 0 
    25: 0 0 0 0 0 0 0 0 0 0 128 128 128 0 0 0 0 0 0 128 128 128 0 0 0 0 0 0 0 0 0 0 
    26: 0 0 0 0 0 0 0 0 0 128 0 0 0 0 0 0 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 
    27: 0 0 0 0 0 0 0 0 0 0 0 0 0 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    28: 0 0 0 0 0 0 0 0 0 0 128 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    29: 0 0 0 0 0 0 0 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    30: 0 0 0 0 0 128 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    31: 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

alias.bmp:

Red 
     0: 194 154 148 106 98 98 123 156 205 238 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     1: 207 177 172 133 114 95 102 121 159 191 216 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     2: 212 184 179 144 127 110 115 127 150 173 197 214 226 231 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     3: 229 216 214 191 168 133 110 98 98 110 127 150 168 185 197 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     4: 255 248 249 231 214 197 173 150 127 110 98 98 92 92 110 150 185 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 
     5: 255 255 255 255 249 237 226 214 197 173 150 121 92 69 69 86 110 144 173 197 214 231 249 255 255 255 255 255 255 255 255 255 
     6: 255 255 255 255 255 255 255 249 237 226 214 185 150 110 86 81 75 69 81 110 150 185 220 243 255 255 255 255 255 255 255 255 
     7: 255 255 255 255 255 255 255 255 255 255 249 231 214 197 173 139 98 69 52 46 69 110 162 202 226 237 249 255 255 255 255 255 
     8: 255 255 255 255 255 255 255 255 255 255 255 255 249 237 226 202 162 110 69 40 34 52 98 150 179 197 220 243 255 255 255 255 
     9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 185 144 92 52 40 52 81 110 139 168 202 231 249 255 255 
     10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 202 162 110 75 57 75 86 110 127 156 191 231 248 255 
     11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 179 139 92 81 92 121 121 121 133 185 229 255 
     12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115 86 92 127 139 133 127 156 197 238 
     13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150 98 98 139 162 144 121 127 159 204 
     14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173 98 75 110 168 168 144 121 127 161 
     15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 197 115 81 104 162 173 150 110 114 153 
     16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173 98 75 110 179 208 185 133 114 153 
     17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150 98 98 150 208 214 168 121 114 153 
     18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115 92 115 179 220 202 156 127 127 161 
     19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 185 144 115 121 162 208 202 168 139 133 159 204 
     20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 237 214 185 144 121 121 162 197 197 168 144 144 168 204 238 
     21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 214 202 191 168 144 144 162 185 197 179 150 144 168 208 242 255 
     22: 255 255 255 255 255 255 255 255 255 255 255 255 249 231 220 202 179 150 150 156 168 168 185 197 185 162 156 173 208 243 255 255 
     23: 255 255 255 255 255 255 255 255 255 249 237 226 220 208 191 162 150 150 173 179 179 173 179 173 173 185 197 220 243 255 255 255 
     24: 255 255 255 255 255 255 255 255 243 226 214 202 185 173 173 179 179 173 179 179 173 156 162 185 208 220 231 249 255 255 255 255 
     25: 255 255 255 255 255 255 255 249 231 202 173 162 162 173 179 179 173 179 179 162 150 156 185 208 231 249 255 255 255 255 255 255 
     26: 255 255 255 255 255 255 255 243 226 197 179 173 173 168 168 168 150 150 162 185 197 202 220 243 255 255 255 255 255 255 255 255 
     27: 255 255 255 255 255 255 249 231 214 197 185 168 156 144 139 139 150 179 202 220 226 237 249 255 255 255 255 255 255 255 255 255 
     28: 255 255 255 255 249 231 214 202 191 173 162 150 144 150 173 191 202 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 
     29: 255 255 255 249 237 208 179 150 150 162 185 197 202 202 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     30: 255 255 255 242 216 172 146 140 172 197 216 223 229 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     31: 255 255 255 246 230 205 189 180 197 222 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 

    Green 
     0: 194 154 148 106 98 98 123 156 205 238 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     1: 207 177 172 133 114 95 102 121 159 191 216 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     2: 212 184 179 144 127 110 115 127 150 173 197 214 226 231 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     3: 229 216 214 191 168 133 110 98 98 110 127 150 168 185 197 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     4: 255 248 249 231 214 197 173 150 127 110 98 98 92 92 110 150 185 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 
     5: 255 255 255 255 249 237 226 214 197 173 150 121 92 69 69 86 110 144 173 197 214 231 249 255 255 255 255 255 255 255 255 255 
     6: 255 255 255 255 255 255 255 249 237 226 214 185 150 110 86 81 75 69 81 110 150 185 220 243 255 255 255 255 255 255 255 255 
     7: 255 255 255 255 255 255 255 255 255 255 249 231 214 197 173 139 98 69 52 46 69 110 162 202 226 237 249 255 255 255 255 255 
     8: 255 255 255 255 255 255 255 255 255 255 255 255 249 237 226 202 162 110 69 40 34 52 98 150 179 197 220 243 255 255 255 255 
     9: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 185 144 92 52 40 52 81 110 139 168 202 231 249 255 255 
     10: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 202 162 110 75 57 75 86 110 127 156 191 231 248 255 
     11: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 220 179 139 92 81 92 121 121 121 133 185 229 255 
     12: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115 86 92 127 139 133 127 156 197 238 
     13: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150 98 98 139 162 144 121 127 159 204 
     14: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173 98 75 110 168 168 144 121 127 161 
     15: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 197 115 81 104 162 173 150 110 114 153 
     16: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 231 173 98 75 110 179 208 185 133 114 153 
     17: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 214 150 98 98 150 208 214 168 121 114 153 
     18: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 220 173 115 92 115 179 220 202 156 127 127 161 
     19: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 185 144 115 121 162 208 202 168 139 133 159 204 
     20: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 237 214 185 144 121 121 162 197 197 168 144 144 168 204 238 
     21: 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 231 214 202 191 168 144 144 162 185 197 179 150 144 168 208 242 255 
     22: 255 255 255 255 255 255 255 255 255 255 255 255 249 231 220 202 179 150 150 156 168 168 185 197 185 162 156 173 208 243 255 255 
     23: 255 255 255 255 255 255 255 255 255 249 237 226 220 208 191 162 150 150 173 179 179 173 179 173 173 185 197 220 243 255 255 255 
     24: 255 255 255 255 255 255 255 255 243 226 214 202 185 173 173 179 179 173 179 179 173 156 162 185 208 220 231 249 255 255 255 255 
     25: 255 255 255 255 255 255 255 249 231 202 173 162 162 173 179 179 173 179 179 162 150 156 185 208 231 249 255 255 255 255 255 255 
     26: 255 255 255 255 255 255 255 243 226 197 179 173 173 168 168 168 150 150 162 185 197 202 220 243 255 255 255 255 255 255 255 255 
     27: 255 255 255 255 255 255 249 231 214 197 185 168 156 144 139 139 150 179 202 220 226 237 249 255 255 255 255 255 255 255 255 255 
     28: 255 255 255 255 249 231 214 202 191 173 162 150 144 150 173 191 202 214 231 249 255 255 255 255 255 255 255 255 255 255 255 255 
     29: 255 255 255 249 237 208 179 150 150 162 185 197 202 202 214 226 237 249 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     30: 255 255 255 242 216 172 146 140 172 197 216 223 229 235 248 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 
     31: 255 255 255 246 230 205 189 180 197 222 246 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 

    Blue (omitted as it is all 255) 
+0

Bạn có phiên bản Delphi nào? – Torbins

+0

Tôi sử dụng Delphi XE – Arnold

+0

@Arnold - Câu hỏi được đề cập lại: Sau khi bạn gọi 'SetSize', bạn có một bitmap 32x32 trắng. Nếu bạn kết thúc với một hình ảnh với nền trắng sau đó vẽ được làm việc như mong đợi. Nếu không, dunno, có thể do kênh alpha, tôi sẽ thử đặt định dạng pixel thành 'pf24bit'. –

Trả lời

2

Tôi muốn chống bí danh một số bitmap trong Delphi.

Nếu bạn muốn vẽ với độ trong suốt của alpha, thì bạn cần kiểm tra byte (rgbReserved) của ảnh bitmap. Trong các phiên bản Delphi hiện đại, việc sử dụng byte đó được điều khiển thông qua TBitmap.AlphaFormat. Bạn cần phải đặt nó thành afDefined và đó là tất cả. Trong các phiên bản Delphi cũ hơn, bạn sẽ cần vẽ bitmap theo cách thủ công thông qua hàm AlphaBlend. Cũng cho các phiên bản Delphi cũ hơn, tôi đã tạo đơn vị này, có thể nó sẽ giúp bạn bằng cách nào đó: http://mikolatorbins.narod.ru/AlphaImageUtils.pas (nó là miễn phí cho bất kỳ sử dụng).

+0

Xem cập nhật của tôi ở trên, đề xuất này đã giúp tôi. Mã ấn tượng bằng cách này. Chính xác thì bạn sử dụng nó để làm gì? – Arnold

+0

Tôi đã tạo nó để kiểm tra bản vẽ trên kính Aero trong Vista. Nó có thể vẽ png và bitmap với bộ byte ra. Ngoài ra nó có thể kết hợp hai hình ảnh vào một (hữu ích cho bản vẽ đệm). – Torbins

4

Bạn phải vẽ bitmap, gán sẽ không hoạt động. Xem documentation cho TransparentColor ví dụ:

xác định màu sắc của bitmap là phải minh bạch khi bitmap được rút ra.


Nhưng sau đó có khả năng bạn vẫn sẽ kết thúc với nền trắng. Đây là cách nó đi: Nếu bạn sử dụng một cái gì đó giống như Image4.Picture.Bitmap.Canvas.Draw(.. hình ảnh sẽ được rút ra sao cho các pixel có màu trong suốt trong hình ảnh nguồn sẽ không được vẽ. Nghĩa là, nền của ảnh đích với các pixel đó sẽ không bị thay đổi. Và những pixel không thay đổi này là màu trắng (màu nền mặc định của một bitmap mới). Vì vậy, bạn sẽ phải sử dụng một cái gì đó như thế này:

Image4.Picture.Bitmap.Canvas.Brush.Color := clGreen; // specify your background color 
Image4.Picture.Bitmap.SetSize(32, 32);    // now you have a green bitmap 
Image4.Picture.Bitmap.Canvas.Draw(0, 0, bitmap); // draw non-transparent parts over green bg. 
+0

Cảm ơn bạn và Glenn1234 về đề xuất của bạn. Nó vẫn không hoạt động nên tôi nghĩ nó phải nằm trong bitmap. Tôi sẽ thực hiện một số thí nghiệm và quay lại ngay sau khi tôi biết nhiều hơn. Cảm ơn. – Arnold

+0

@Arnold - Bạn được chào đón. Trong trường hợp có thể hiểu nhầm, thuộc tính '.Transparentxx' không liên quan gì đến kênh alpha. –

+0

Tôi biết, theo như tôi biết bên trái/dưới cùng là một số giải pháp cho thực tế là bitmap không có tính minh bạch khi nó được xác định. – Arnold

2

Để mượn từ tài liệu trợ giúp Delphi tôi có ở đây.

procedure TForm1.Button1Click(Sender: TObject); 
    var 
    mybitmap: TBitmap; 
    begin 
    mybitmap := TBitmap.Create; 
    try 
     with mybitmap do begin 
     LoadFromFile('C:\Program Files\Borland\Delphi 3\Images\Splash\256color\factory.bmp'); 
     Transparent := True; 
     TransParentColor := mybitmap.canvas.pixels[25,25]; 
     Form1.Canvas.Draw(0,0,myBitMap); 
     TransparentMode := tmAuto; // Transparent color now is clDefault = TColor($20000000); 
     Form1.canvas.Draw(250,0,myBitMap); 
     end; 
    finally 
     myBitmap.free; 
    end; 
end; 
Các vấn đề liên quan