Как отобразить часть растрового изображения прозрачным - PullRequest
6 голосов
/ 05 декабря 2011

Я хочу сглаживать некоторые растровые изображения в Delphi.Файл загружается из файла, присваивается изображению, обрабатывается (apply_kernel), а результат присваивается другому изображению.В Delphi левый / нижний пиксель определяет прозрачный цвет, когда Image.Transparent = True.Я работаю только с 32-битными растровыми изображениями.

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');

Это работает для загруженного растрового изображения, назначенного для Image3, но не для вычисленного растрового изображения, назначенного для Image4.Цвет слева / снизу остается неизменным (clWhite).Чтобы понять, что происходит, я записываю растровые изображения в файл, каждый цвет отдельно (см. Дампы ниже).Я проверил прозрачность изображений, имеет автоматический размер, центр и растяжение, растровое изображение 32х32, изображения тоже.Я также пытался установить TransparentColor := clWhite, но безрезультатно.Я должен сделать очень глупую ошибку, но не могу ее найти.Может ли кто-нибудь помочь мне?

Редактировать Торбинс напомнил мне, что я забыл о зарезервированном байте.В некоторых позициях он установлен равным 128, фактически это позиция нулей (см. Обновленный дамп).Я сделал несколько вещей, которые в итоге привели к прозрачному растровому изображению: - просто обнулили все зарезервированные байты.- намного больше, что все не работало до тех пор, пока - с помощью задания работает, Draw не работает как ни странно, аргументация Sertac кажется обоснованной

Во всяком случае, код, который работает,

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, может, я что-то не так делаю с Draw?

@ Torbins, обнуление всех зарезервированных байтов довольно грубо, я немного поэкспериментирую с вашим предложением с альфа-каналом

Спасибовас всех очень много!

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)

Ответы [ 3 ]

4 голосов
/ 05 декабря 2011

Вы должны нарисовать растровое изображение, назначение не будет работать. См. документацию для TransparentColor, например:

Определяет, какой цвет растрового изображения должен быть прозрачным, когда растровое изображение нарисовано.


Но, вероятно, у вас все равно останется белый фон. Вот как это происходит: если вы используете что-то вроде Image4.Picture.Bitmap.Canvas.Draw(.., изображение будет нарисовано так, что пиксели, имеющие прозрачный цвет в исходном изображении, не будут нарисованы. То есть фон целевого изображения с этими пикселями не будет изменен. И эти неизмененные пиксели являются белыми (цвет фона по умолчанию для нового растрового изображения). Так что вам придется использовать что-то вроде этого:

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.
2 голосов
/ 05 декабря 2011

Я хочу сглаживать какое-то растровое изображение в Delphi.

Если вы хотите рисовать с альфа-прозрачностью, вам нужно проверить байт (rgbReserved) ваших растровых изображений.В современных версиях Delphi использование этого четвертого байта контролируется через TBitmap.AlphaFormat.Вам нужно установить его на afDefined и все.В старых версиях Delphi вам нужно будет рисовать растровые изображения вручную с помощью функции AlphaBlend .Также для более старых версий Delphi я создал этот модуль, возможно, он вам как-то поможет: http://mikolatorbins.narod.ru/AlphaImageUtils.pas (это бесплатно для любого использования).

2 голосов
/ 05 декабря 2011

Чтобы позаимствовать справочную документацию Delphi, которую я имею здесь.

 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;
...