imageにおいて、画像のないところを透明にしたい。

解決


洋介  2005-03-04 02:47:48  No: 13529  IP: [192.*.*.*]

イメージをフォームに貼ってアイコンを乗せました。
私のやりたいことは、実行時にイメージに貼ったアイコンが画面上に浮き出る(フォームがなくアイコンだけが見える)ようにしたいのですが、どうしてもフォームが透明になりません。
フォームのColorをclBackgrownd、TransparentColorをclBackgrownd、TransparentColorValueをtrueにして、imageのTransparentをtrueにして実行しましたが、全てのwindowを閉じた状態でしか思うようになりません。何かのフォームの上で実行させると、色が四角く浮き出てしまいます。
どうか、お願いします。

編集    削除
Mr.XRAY  URL  2005-03-04 06:07:01  No: 13530  IP: [192.*.*.*]

取敢えず,以下のコードで透明にはなりまが,後は工夫して下さい.

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    procedure CreateParams(var Params: TCreateParams); override;
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
     inherited CreateParams(Params);
     Params.ExStyle := WS_EX_TRANSPARENT
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     Form1.Brush.Style := bsClear;
     Form1.BorderStyle := bsNone;
end;

http://homepage2.nifty.com/Mr_XRAY/Halbow/VCL01.html#VChap1-7

な方法もあります ( List 9 ).

編集    削除
洋介  2005-03-04 06:46:45  No: 13531  IP: [192.*.*.*]

レスありがとうございます。
↑のコードではきちんとできたのですが、私のプログラムに     Form1.Brush.Style := bsClear;
     Form1.BorderStyle := bsNone;

編集    削除
洋介  2005-03-04 06:49:59  No: 13532  IP: [192.*.*.*]

途中で送信してしましました。。すみません。
私のプログラムに
    Form1.Brush.Style := bsClear;
    Form1.BorderStyle := bsNone;
を追加して実行したのですが、フォームは透明になりましたが、imageのアイコンが表示されている以外の領域にどうしても色がついてしまいます。imageの余白を透明にする方法を教えていただきたいのですが。
よろしくお願いします。

編集    削除
Mr.XRAY  URL  2005-03-04 07:28:00  No: 13533  IP: [192.*.*.*]

>imageのアイコンが表示されている以外の領域にどうしても色

Image上にどのようなコードでアイコンを表示しているのか知りませんが,
Imageのサイズ(ex. Width,Height)をアイコンのサイズと同じにしても
ダメなんでしょうか.

編集    削除
洋介  2005-03-04 08:31:15  No: 13534  IP: [192.*.*.*]

本当に、すみません。。。
見直してみると、imageのTransparentをtrueにしていませんでした。。
お騒がせして申し訳ないです。。Mr.XRAYさん、感謝いたします。

編集    削除