Я использую delphi XE-5 и загружаю информацию о кнопках из файла JSON, чтобы создать кнопки в элементе управления TMS ADVToolBar. Каждая кнопка 50X35 и в формате png с прозрачностью.
Я получаю каждый URL-адрес, используя компонент idHTTP для извлечения его в поток, а затем загружаю в png. Затем я рисую его на прозрачном BMP. Однако я не думаю, что это правильный путь. В любом случае, bmp затем добавляется в TImageList, где он назначается кнопке с использованием индекса. Изображение отображается на кнопке, но без прозрачности.
см. мой код ниже:
imgUrl:= //code to get img url from JSON file;
MS := TMemoryStream.Create;
png := TPngImage.Create;
png.Transparent:= True;
try
idHTTP1.get(imgUrl,MS);
Ms.Seek(0,soFromBeginning);
png.LoadFromStream(MS);
bmp:= TBitmap.Create;
bmp.Transparent:= True;
bmp.Width:= 50;
bmp.Height:= 50;
png.Draw(bmp.Canvas, Rect(7, 7, png.Width, png.Height));
ImageList1.Add(bmp, nil);
AdvGlowBtn.Images:= ImageList1;
AdvGlowBtn.Layout:= blGlyphTop;
AdvGlowBtn.WordWrap:= False;
AdvGlowBtn.AutoSize:= True;
AdvGlowBtn.ImageIndex:= ImageList1.Count-1;
bmp.Free;
finally
FreeAndNil(png);
FreeAndNil(MS);
end;
Transparent
. Вы, вероятно, хотите растровое изображение 32bpp. - person David Heffernan   schedule 27.01.2014as this
без третьих лиц ... Но лучше всего добавлять PNG напрямую. - person TLama   schedule 27.01.2014Assign
также принимает размер исходной графики. Ну, эта разница в размере очень важная деталь (я взял размер, который вы упомянули, как опечатку по сравнению с вашим кодом). Итак, вы на самом деле хотите обрезать или растянуть их, сохраняя прозрачность... - person TLama   schedule 27.01.2014