Я использую Barcode Studio 2011 для рисования QR-кода в компонент Graphics32 - TImage32 и хочу сохранить его в формате png, но с прозрачным белым цветом, который я указал в OuterColor of Graphics32.
OnFormСоздать у меня только
procedure TForm1.FormCreate(Sender: TObject);
begin
psBarcodeComponent1.BarCode := 'some text here...';
end;
и на данный момент мне назначена картина для события нажатия кнопки
procedure TForm1.Button8Click(Sender: TObject); // Paint the barcode
var
bmp: TBitmap32;
Coords: TRect;
begin
bmp := TBitmap32.Create;
bmp.SetSize(image.Width, image.Height);
bmp.Canvas.Brush.Color := color;
bmp.Canvas.Rectangle(-1, -1, image.Width+2, image.Height+2);
bmp.DrawMode := dmTransparent;
bmp.OuterColor := clWhite;
// make Coords the size of image
Coords := Rect(0,0,image.Width,image.Height);
psBarcodeComponent1.PaintBarCode(bmp.Canvas, Coords);
image.Bitmap.Assign(bmp);
end;
Я использую библиотеку изображений вампира для преобразования растрового изображения в формат PNG, но я с удовольствием воспользуюсь любой библиотекой, функцией и советом - я пытаюсь сделать это сейчас почти неделю! Я прочитал и перечитал документацию по graphics32, а также в Библиотеке изображений вампиров, но ничего из того, что я попробую, не преобразует белый в прозрачный цвет. Я попробовал clWhite, clWhite32, а также установил drawMode в dmBlend и применил функцию ChromaKey - все безрезультатно, но много разочарований, кофе и немного пива;)
Вот так я и сохраняю ...
procedure TForm1.Button7Click(Sender: TObject); // Save with Vampyre Imaging Lib
{ Try to save in PNG format with transparancy }
var
FImage: TSingleImage;
begin
FImage := TSingleImage.Create;
ConvertBitmap32ToImage(image.Bitmap, FImage);
FImage.SaveToFile('VampyreLibIMG.png');
end;
В результате получается миниатюра черного цвета, а при просмотре в средстве просмотра фотографий Windows она становится полностью прозрачной.
Я надеюсь, что предоставил достаточно информации и кто-то может мне помочь.
Chris