2016-05-25 12 views
2

フォームの伸ばした画像を取得するにはどうすればよいですか? MyForm.BackgroundImageを使用すると、元の画像は表示されますが、フォームに表示されている画像は伸びません。C#Winformsフォームの伸ばした背景画像を取得

イメージを取得できない場合は、結果のイメージをBackgroundImageLayout = Stretchから再作成できますか?

なぜ私はこれをやりたいのですか: 私は透明性を許さないコントロールを持っています。透明性を偽るために、私は背景画像を取り、コントロールがカバーするセクションのイメージを作成します。これは、BackGroundImageLayoutをnone以外に設定するまでうまく動作します。

ご協力いただきありがとうございます。

+2

フォームのClientSizeプロパティと、Rectangleを使用するGraphics.DrawImage()オーバーロードを使用して、同じ方法で自分だけストレッチします。 BackgroundImageの画像も同様に伸ばして、32bppPArgbのピクセル形式を選んでUIをよりスムーズにすることもできます。 –

答えて

2

あなたが取得することができます/そのように延伸されたフォームの背景画像を再作成:

private Bitmap getFormBackgroundImage() 
    { 
     Bitmap bmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height); 
     using (Graphics g = Graphics.FromImage(bmp)) 
     { 
      g.DrawImage(this.BackgroundImage, 
       new Rectangle(0, 0, bmp.Width, bmp.Height)); 
     } 
     return bmp; 
    } 

はその後、子コントロールの背景として使用するために、それの一部を切り抜くことができます。

1

これを試してみてください:

a)フォームの背景イメージ(ベースコントロール)を設定します。

this.BackgroundImage = <image>; 

b)子コントロールを作成し、ベースコントロール上にドロップします。

c)子コントロールのドックを[塗りつぶし]に設定します。

this.childControl.Dock = DockStyle.Fill; 

d)ベースコントロールコンストラクタで、子コントロールの背景イメージをベースコントロールのイメージとして設定します。このように:

childControl.BackgroundImage = this.BackgroundImage; 

e)子コントロールの背景画像レイアウトをstrechに設定します。

childControl.BackgroundImageLayout = ImageLayout.Stretch; 

これは、子供のコントロールを透明に見えるようにします。それがあなたの問題を解決することを願っています。

関連する問題