Вниз
Скачать: CL | DM;

Конвертация 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.047 c
2-1272104034
Kukulkan
2010-04-24 14:13
2010.08.27
Изменение TGoupBox!


3-1239901324
Мазут Береговой
2009-04-16 21:02
2010.08.27
Хранимые процедуры и параметры с UNICODE


2-1275564908
Б
2010-06-03 15:35
2010.08.27
Как узнать физические размеры монитора?


4-1236247314
kalexi
2009-03-05 13:01
2010.08.27
Как определить какую область занимает процесс в памяти.


15-1271795401
Юрий
2010-04-21 00:30
2010.08.27
С днем рождения ! 21 апреля 2010 среда




   Наверх