Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[240] graphic32의 bitmap32에 png를 빨리 적재하는 방법
푸른꿈 [bluedream] 5342 읽음    2008-04-21 12:53
GRAPHIC32를 도형처리에 리용하면서 png파일의 적재속도가 떠서 다음의 방법으로 속도를 올렸습니다.
먼저 png를 gdi+의 TGPBitmap에 읽어들이고 LockBits, CopyMemory를 써서 tbitmap32에 복사합니다.

uses ..., GDIPAPI, GDIPOBJ, GDIPUTIL;

img1 : TImgView32;

procedure TForm1.btn1Click(Sender: TObject);
var gbmp: TGPBitmap;
  bmpdata : TBitmapData;
  bytes : Cardinal;
  path : string;
begin
  path := ExtractFilePath(Application.ExeName);
  gbmp := TGPBitmap.Create(path + 'bliss.png');
  img1.Bitmap.SetSize(gbmp.GetWidth, gbmp.GetHeight);
  gbmp.LockBits(MakeRect(rect(0, 0, gbmp.GetWidth-1, gbmp.GetHeight-1)),
                ImageLockModeRead, PixelFormat32bppARGB, bmpdata);
  bytes := bmpdata.Stride * bmpdata.Height;
  CopyMemory(img1.Bitmap.Bits, bmpdata.Scan0, bytes);
  gbmp.Free;
  img1.Bitmap.DrawMode:= dmBlend;
end;


gdi+의 빠른 적재속도와 TGPBitmap에서 png의 픽셀포맷이 ARGB인것을 리용하여 속도와 투명도를 다 보장하려는 시도였습니다.
이렇게 하면  tbitmap32의 loadfromfile을 쓸때 보다 4배정도 빨라집니다.

+ -

관련 글 리스트
240 graphic32의 bitmap32에 png를 빨리 적재하는 방법 푸른꿈 5342 2008/04/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.