Delphi.
У меня есть ImageList (либо TImageList, либо DevExpress TcxImageList), который содержит изображения PNG с использованием альфа-канала.RGB часть изображения - черный квадрат.Альфа-канал содержит форму реальной картинки.Я хочу изменить цвет черного квадрата, сохраняя при этом форму в альфа-канале.(Так что со временем я меняю цвет значка-формы-значка-на что угодно.)
Я пробовал много способов, но безуспешно.Я попытался изменить свойства списков и экспортировать RGB и альфа-разделение.
TImageList: маска не экспортируется.Если я делаю SaveToFile, он сохраняет 0-байтовый файл, и Replace также говорит, что размер маски неправильный (0 * 0 px)
BMPimg := TBitmap.Create;
BMPmask := TBitmap.Create;
Try
TImageListHack(il1).GetImages(0, BMPimg, BMPmask);
BMPimg.Canvas.Brush.Color := clRed;
BMPimg.Canvas.FillRect(TRect.Create(0, 0, BMPimg.Width, BMPimg.Height));
il1.Replace(i, BMPimg, BMPmask);
End;
Finally
BMPimg.Free;
BMPmask.Free;
End;
TcxImageList: он загружает картинку + маску в BMPimg, и маскачерный квадрат вместо фигуры в BMPmask.
BMPimg := TBitmap.Create;
BMPmask := TBitmap.Create;
Try
il1.GetBitmap(i, BMPimg);
il1.GetMask(i, BMPmask);
BMPimg.Canvas.Brush.Color := clRed;
BMPimg.Canvas.FillRect(TRect.Create(0, 0, BMPimg.Width, BMPimg.Height));
il1.Replace(i, BMPimg, BMPmask);
Finally
BMPimg.Free;
BMPmask.Free;
End;
Как я могу изменить цвет переднего плана при сохранении альфа-канала в изображениях PNG списка изображений?