画像の置換

提供: RAD Studio
移動先: 案内検索

グラフィック ファイルの読み込みと保存 への移動


イメージ コントロール内の画像は、いつでも置き換えることができます。新しいグラフィックを、すでにグラフィックが入っている画像に割り当てると、その新しいグラフィックが既存のものと置き換わります。

イメージ コントロール内の画像を置き換えるには、新しいグラフィックをイメージ コントロールの Picture オブジェクトに割り当てます。

新しいグラフィックの作成は、初期グラフィックを作成する際に使用する手順を同じですが、初期グラフィックはデフォルト サイズを使用するのに対し、今度はユーザーにサイズを指定する手段を用意しなければなりません。このオプションを提供する簡単な方法は、ダイアログ ボックスを表示することです。

そのようなダイアログ ボックスをプロジェクト内に入れるには、メイン フォームのユニット内の uses 句に追加します。それから、イベント ハンドラを、[ファイル|新規作成]メニュー項目の OnClick イベントにアタッチします。次に例を示します:

procedure TForm1.New1Click(Sender: TObject);
var
  Bitmap: TBitmap; { temporary variable for the new bitmap }
begin
  with NewBMPForm do
  begin
    ActiveControl := WidthEdit; { make sure focus is on width field }
    WidthEdit.Text := IntToStr(Image.Picture.Graphic.Width);
    { use current dimensions... }
    HeightEdit.Text := IntToStr(Image.Picture.Graphic.Height); { ...as default }
    if ShowModal <
      >
    idCancel then { continue if user doesn"t cancel dialog box }

    begin
      Bitmap := TBitmap.Create; { create fresh bitmap object }
      Bitmap.Width := StrToInt(WidthEdit.Text); { use specified width }
      Bitmap.Height := StrToInt(HeightEdit.Text); { use specified height }
      Image.Picture.Graphic := Bitmap; { replace graphic with new bitmap }
      CurrentFile := " "; { indicate unnamed file }
      Bitmap.Free;
    end;
  end;
end;
void __fastcall TForm1::New1Click(TObject *Sender) {
	Graphics::TBitmap *Bitmap;
 // make sure focus is on width field
	NewBMPForm->ActiveControl = NewBMPForm->WidthEdit;
 // initialize to current dimensions as default ...
	NewBMPForm->WidthEdit->Text = IntToStr(Image->Picture->Graphic->Width);
	NewBMPForm->HeightEdit->Text = IntToStr(Image->Picture->Graphic->Height);
	if (NewBMPForm->ShowModal() != IDCANCEL)
	{ // if user does not cancel dialog...
		Bitmap = new Graphics::TBitmap(); // create a new bitmap object
	 // use specified dimensions
		Bitmap->Width = StrToInt(NewBMPForm->WidthEdit->Text);
		Bitmap->Height = StrToInt(NewBMPForm->HeightEdit->Text);
		Image->Picture->Graphic = Bitmap; // replace graphic with new bitmap
		CurrentFile = EmptyStr; // indicate unnamed file
		delete Bitmap;
	}
}

メモ: 新しいビットマップを画像オブジェクトの Graphic プロパティに割り当てると、画像オブジェクトが新しいグラフィックに現れますが、まだその所有権は持っていません。画像オブジェクトは、自分自身の内部グラフィック オブジェクトは所有したままになります。このため、先のコードでは、割り当てを行った後、ビットマップ オブジェクトの解放を行っています。

関連項目