AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
Delphi2010 イメージ(Image) 2010/09/03
 
前回は[Additional]内の「DrawGrid」(描画グリッド)について見ましたので、今回は同じく[Additional]内の「Image」(イメージ)について見てみます。イメージは Delphi6 にもあります。

 
イメージは、簡単に画像を表示出来るようにするためのコンポーネントです。これによって簡易な画像ビューワーソフトのようなものが容易に作成できます。また、簡単に画面の一部に画像を貼り付けたり出来ますので色々な視覚効果等に役立つ場合もあるでしょう。それでは配置してみます。1つ目なので Nameプロパティは「Image1」となります。

 
デザイン時に画像を貼り付けておきたい場合は、Pictureプロパティの欄を選択し、右横の[…]をクリックし、表示させたい画像ファイルを選択します。



↓[読み込み]をクリック

↓画像ファイルを選択

↓[OK]をクリック

この画像ファイルの大きさは幅120・高さ100なので
Widthプロパティを120、Heightプロパティを100にします
 
Delphi6では、Windows標準のBitmapファイル(BMP)、メタファイル(WMF)、拡張メタファイル(EMF)位しか読み込めませんでしたが、Delphi2010では更に、JPEGファイル(JPEG,JPG)、PNGファイル、GIFファイル、TIFFファイル(TIFF,TIF)も選択できるようになっています。
形式オブジェクト保存するとusesに追加されるユニット
BMPTBitmap
ICOTIcon
WMFTMetafile
EMFTMetafile
GIFTGIFImageGIFImg
PNGTPngImagepngimage
JPEGTJPEGImagejpeg
TIFFTWICImage
この「TWICImage」はヘルプによると
TWICImage が利用できるのは、Windows XP SP3 以上の OS で、DirectX ランタイムを使用している場合だけです。
とありますので、そうでないPC環境では扱えないかもしれません。
 
デザイン時ではなく実行時に画像を指定したい場合は、

というように、例えば、ボタンと [Dialogs]内の「OpenPictureDialog」を配置し、ボタンの OnClickイベントで
procedure TForm1.Button1Click(Sender: TObject);
begin
 if (OpenPictureDialog1.Execute) then begin
  Image1.Picture := nil ;
  try
   Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  finally
   ;
  end;
 end;
end;
のように記述します。uses節で「GIFImg,pngimage,jpeg」も追加しておくと、GIFファイル、PNGファイル、JPEGファイルも扱えるようになります。追加していない場合は、BMP,ICO,WMF,EMF,TIFFファイルしか扱えません。
 
画像ファイルを開いた後、画像ファイルの幅・高さはそれぞれ、Image1.Picture.Width、Image1.Picture.Height で取得する事が出来ます。ですので、これらの値を Image1.Width、Image1.Height へ入れると画像ファイルをそのままの大きさで表示する事が出来ますが、Image1.Width、Image1.Heightのほうが小さければ画像の一部しか見えませんし、Image1.Picture.Width、Image1.Picture.Height の方が小さければ、Image1のなかに画像のない余白部が出来ます。
 
そこで、画像を強制的に Image1.Width・Image1.Height の枠内におさめて表示させようというのが、Stretchプロパティで、画像を開いた後にこれを True にします。大きい画像ファイルは縮小表示され、小さい画像ファイルは拡大表示されます。但し、縦横の比率が違う場合には画像が歪んで表示されますので注意して下さい。
 
CenterプロパティをTrueにすると、画像の大きさが Image1.Width・Image1.Height よりも小さい場合、画像を中央に表示させるようにします。
 
IncrementalDisplayプロパティはヘルプによると
IncrementalDisplay が true の場合,ロードなどの時間のかかる処理の間に部分的なレンダリングが一定時間ごとに描画されます。IncrementalDisplay プロパティを false に設定すると,全処理が完了するまでイメージは描画されません。
との事です。
 
Proportionalプロパティはヘルプによると
イメージをイメージコントロールの境界に合うように歪みを生じさせることなく変更するかどうかを示します。
Proportional を true に設定すると,Stretch プロパティで生じるような歪みを生じさせることなく,イメージをイメージコントロール内に完全に表示させることができます。Proportional が true の場合,大きすぎてイメージコントロール内に収まらないイメージは,収まるまで縮小されます(縦横比はそのまま)。ただし,小さすぎる場合には,イメージは通常どおり表示されます。つまり,Proportional プロパティはイメージの表示倍率を小さくできますが,大きくはできません。イメージコントロールをサイズ変更すると,イメージもサイズ変更されます。
なお、画像の大きさをそのまま反映したい場合は、AutoSizeプロパティをTrueにすれば良いようです。但し、フォーム画面の一部にイメージコンポーネントを直接貼り付けている場合は、イメージのサイズが変わってしまうので、画面レイアウト上、困る事になると思いますから、そういう事はしない、イメージをフォーム画面全体に貼り付ける、或いは、スクロールボックスを配置してその中にイメージを配置する、というような事が必要でしょう。
 
 
それ以外は、<オブジェクトインスペクタ>をざっと見た感じでは、これまでと同じ、また、他のコンポーネントの追加分と同じ、という感じです。
 
お絵描きソフト・ドローソフト・CADソフト等で、図形を作図する場合(Windows GDI)には、Canvasを持つフォーム或いはコンポーネントへ、Canvasの各メソッドを利用しますが、そのコンポーネントとくれば、大抵の場合、この Imageコンポーネント 或いは PaintBoxコンポーネントが利用されます。
ImageコンポーネントとPaintBoxコンポーネントの大きな違いは、Imageコンポーネントは、画面が他の画面がかぶさったりした時に、何もしなくても自動的に再描画してくれたり、画像関連のメソッドがあって画面状態を簡単にファイル保存することが出来たり、と、やや高機能な分、速度が PaintBoxよりも幾分遅い/重い、という事になっています。PaintBoxの場合、再描画などは自分でプログラミングする必要があります。おそらくは諸事情で PaintBoxを利用されるケースが多いと思われますが、簡易性という意味で Imageコンポーネントを利用するのも1つの手法ですので、有効利用できるのではないかと思います。
 
画像を表示するだけの簡易ビューワー等は、このイメージコンポーネントで簡単に作れますので、特に Delphi2010では、BMP、WMF、EMF、GIF、PNG、TIFF、JPEG、と、特によく利用される画像形式が扱えますから、自分好みのものを作って自分で利用する楽しみがあると思います。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
▲2010/09/02
 2010/09/03
▼2010/09/04
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.