Delphi GDI+基本用法まとめ

3677 ワード

GDI+は以前聞いたことがあるだけで、まだあまり使ったことがなくて、この时間は使って、とても使いやすいと思います.ここでまとめます.備忘録を残すGDI+(Graphics Device Interface plus)はWindows XPのサブシステムであり、主に表示画面と印刷装置で関連情報を出力することを担当し、C++クラスを通じて実現されるアプリケーションプログラミングインターフェースのセットである.グラフィックペイントに関するインタフェースなので、まずよく使われるいくつかの画像フォーマットを理解してみましょう.
一般的な画像フォーマット
一般的な画像フォーマットはJPEG,BMP,PNG.-JPEG:冗長な画像やカラーデータを損失圧縮方式で除去する、極めて高い圧縮率を得るとともに、非常に豊かで生き生きとした画像を示す.最も広く応用されている.JPEGユニットを参照する、TJPEGImageクラスを通じて読み取る.BMP:bitmap(ビットマップ)の略称で、windowオペレーティングシステムにおける標準的な画像ファイルフォーマットであり、多種のwindowアプリケーションにサポートされることができる、含まれる画像情報が豊富で、ほとんど圧縮しないのが特徴であるが、これにより、占有スペースが比較的大きい.DelphiのTImageに必要なフォーマットはBMP.Graphicsユニットを参照し、Tbitmapにより読み取る.PNG:これは新興のネットワーク画像フォーマットであり、BMPフォーマットを除く現在最も歪みのないフォーマットである.透明な画像の作成をサポートする必要がある.これにより、画像に透かしを付ける機能を実現することができる.pngImageユニットを参照する、TPNGImageクラスによりPNG画像をロードすることができる.
異なる画像フォーマットの変換
PNGをBitmapに変換
var
  oBitMap: TBitMap;
  oPNG: TPNGImage;
begin strFileName := '1.png';
  oBitMap := TBitMap.Create;
  oPNG := TPNGImage.Create;
  try
    oPng.LoadFromFile(strFileName);
    oBitMap.Width := 100;
    oBitMap.Height := 200;
    oBitMap.Canvas.Draw(0, 0, oPng);
  finally
    oBitMap.Free;
    oPng.Free;
  end;

BMPをIStreamに変換
  oBitMap := TBitMap.Create;
  try
    oBitmap.loadFromFile('1.bmp');
    oStream := TMemoryStream.Create;
    try
      oBitmap.SaveToStream(oStream);
      oStream.Position := 0;
      oStreamAdapter := TStreamAdapter.Create(oStream);
      // do something
    finally
      oStream.free;
      oStreamAdapter := nil; //    ,    Free,    ,      
    end;
  finally
    oBitmap.free;
  end;

GDI+の基本的な使い方
GDIPOBJ,GDIPAPIの2つのユニットを参照する、開始前に呼び出し初期化方法を呼び出す必要があり、主にdllのロードと初期化に関する方法である.基本的な使い方は以下の通りです.
  oImage1 := TGPImage.Create('Photo_1.jpg');
  oImage2 := TGPImage.Create('Photo_2.jpg');
  oImage3 := TGPImage.Create('Photo_3.jpg');
  oImage4 := TGPImage.Create('Photo_4.jpg');
  g1 := TGPGraphics.Create(image1.Canvas.Handle);
  g1.DrawImage(oImage1, 0, 0, oImage1.GetWidth, oImage1.GetHeight);
  g1.DrawImage(oImage2, oImage1.GetWidth, 0, oImage2.GetWidth, oImage2.GetHeight);
  g1.DrawImage(oImage3, 0, oImage1.GetHeight, oImage3.GetWidth, oImage3.GetHeight);
  g1.DrawImage(oImage4, oImage1.GetWidth, oImage1.GetHeight, oImage4.GetWidth, oImage4.GetHeight);

上のコードは4枚の絵を1枚の図に相当する.その他のいくつかの用法はTGPGraphics関連インタフェースを参照する.