Вниз
Скачать: 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.053 c
15-1270305381
Игорь Шевченко
2010-04-03 18:36
2010.08.27
Microsoft заботится о нас. Иногда даже чересчур


15-1270931403
Юрий
2010-04-11 00:30
2010.08.27
С днем рождения ! 11 апреля 2010 воскресенье


15-1269080805
tippa
2010-03-20 13:26
2010.08.27
английский и программирование


2-1268370164
MonoLife
2010-03-12 08:02
2010.08.27
Меню дочерних форм


15-1266854887
Kerk
2010-02-22 19:08
2010.08.27
Язык Си и начальное обучение программированию




   Наверх