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

解決


洋介  2005-03-04 02:47:48  No: 13529

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


Mr.XRAY  URL  2005-03-04 06:07:01  No: 13530

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

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

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


洋介  2005-03-04 06:49:59  No: 13532

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


Mr.XRAY  URL  2005-03-04 07:28:00  No: 13533

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

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


洋介  2005-03-04 08:31:15  No: 13534

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加