Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКонвертация TBitmap в TGPBitmap Найти похожие ветки
← →
Беликов А.А (2010-05-04 10:08) [0]Какие еще способы есть, кроме кривой переливки байтов из TBitmap в TGpBitmap ?
Пример способа переливки:
var
BMP: TBitmap;
GPBMP: TGPBitmap;
Info: PBitmapInfo;
Image: Pointer;
InfoSize, ImageSize: Cardinal;
begin
BMP := TBitmap.Create;
BMP.LoadFromFile("1.bmp");
GetDIBSizes(BMP.Handle, InfoSize, ImageSize);
Image := AllocMem(ImageSize);
Info := AllocMem(InfoSize);
GetDIB(BMP.Handle, 0, Info^, Image^);
GPBMP := TGPBitmap.Create(Info^, Image);
← →
Andy BitOff © (2010-05-04 10:48) [1]А в чем задача? Почему сразу не загрузить .bmp в GPBMP?
← →
Беликов А.А (2010-05-04 15:32) [2]
> Andy BitOff © (04.05.10 10:48) [1]
> А в чем задача? Почему сразу не загрузить .bmp в GPBMP?
Битмап находится в TImageList. Точнее выдергивается из него методом GetBitmap.
← →
Andy BitOff © (2010-05-04 16:09) [3]Тогда кури Stream Save/Load
← →
Andy BitOff © (2010-05-05 10:00) [4]Вчера не до того было =)
Вот сегодня.implementation
uses
ActiveX;
{$R *.dfm}
type
TFixedStreamAdapter = class(TStreamAdapter)
public
function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult; override; stdcall;
end;
{ TFixedStreamAdapter }
function TFixedStreamAdapter.Stat(out statstg: TStatStg; grfStatFlag: Integer): HResult;
begin
Result := inherited Stat(statstg, grfStatFlag);
statstg.pwcsName := nil;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitMap;
image: TGPBitmap;
graphics : TGPGraphics;
strm: TStream;
begin
bmp := TBitmap.Create;
strm := TMemoryStream.Create;
try
ImageList1.GetBitmap(0, bmp);
bmp.SaveToStream(strm);
image := TGPBitmap.Create(TFixedStreamAdapter.Create(strm));
graphics := TGPGraphics.Create(Canvas.Handle);
graphics.DrawImage(Image, 50, 50);
graphics.Free;
image.Free;
finally
strm.Free;
bmp.Free;
end;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.067 c