1

リソース ファイルからイメージ bmp をロードし、それを image1.Picture にロードするにはどうすればよいですか? 私はこれを試しました:

{$R resource.res}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 BitMap1 : TBitMap;
begin
  BitMap1 := TBitMap.Create;
  try
    BitMap1.LoadFromResourceName(HInstance,'down');
    Image1.Picture(BitMap1);
  finally
    BitMap1.Free;
  end;
end;

しかし、うまくいきません。ありがとう!


ファイルを作成しました。rc:

DOWN BMP DOWN.BMP 

そしてbrcc32.exeでコンパイルしました:

brcc32.exe resource.rc

リソースを実装しました:

{$R resource.res}

しかし、ファイル bmp が見つかりません。


動作せず、常にエラーになりますが、別のコードが見つかりました:

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   Image1.Picture.Bitmap.Handle := LoadBitmap(hInstance, 'DOWN');
end;

しかし、画像をクリックすると消えるのはなぜですか? ありがとう

これはコードです:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, ExtCtrls;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$R RESOURCE.RES}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   Image1.Picture.Bitmap.Handle := LoadBitmap(hInstance,'DOWN');
end;

end.
4

2 に答える 2

7

最初にリソースを正しく作成する必要があります。以下の例(バージョンを指定しなかったため、一般的な Delphi)。

ファイル: Resource.rc(ひどい名前、ところで、ひどいリソース名)

DOWN BITMAP DOWN.BMP

次に、コンパイラが処理するコードにファイルを含めます。

{$R resource.res resource.rc}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer);
var
 BitMap1 : TBitMap;
begin
  BitMap1 := TBitMap.Create;
  try
    BitMap1.LoadFromResourceName(HInstance,'DOWN');
    Image1.Picture.Assign(Bitmap1);;
  finally
    BitMap1.Free;
  end;
end;

{$R }お使いのバージョンの Delphi が上記のディレクティブをサポートしていない場合は、そのresource.rc部分を削除して、最初にプロジェクト フォルダのコマンド プロンプトからリソースをコンパイルします。

brcc32 resource.rc
于 2012-06-07T22:45:30.453 に答える