2016-12-09 6 views
0

私は現在、スタッフの画像の上にメモを入れようとしています。ただし、メモの背景は、画像のようにフォームの背景に設定されています。 画像の種類はpngです。c#別の画像の上に画像を重ねる

enter image description here

//class music staff 
    public MusicStaff(int xLoc, int yLoc, int xSize, int ySize) 
     { 
      this.SetBounds(xLoc, yLoc, xSize, ySize); 
      this.Visible = true; 
      ResourceManager rm = Resources.ResourceManager; 

      Bitmap bmp = (Bitmap)rm.GetObject("Staff1"); 
      this.BackgroundImage = bmp; 
      this.BackgroundImageLayout = ImageLayout.Stretch; 
      this.BackColor = Color.White; 
//adding the background pic 
    panel4 = new MusicStaff(3, 62, 927, 150); 

//adding a note 
MusicNote p = new MusicNote(pitch, duration, shape, s); 

      p.SizeMode = PictureBoxSizeMode.StretchImage; 
      p.BackColor = Color.Transparent; 
      p.Size = new Size(50, 75); 
p.Location = new Point(xCounter + starterX, NoteLocations.c0.mainPoint); 
         Bitmap myImage = (Bitmap)rm.GetObject(shape); 
         p.Image = myImage; 
+1

誰もがどこから助けてくれるのか分かりませんので、誰でもどこから助けていいですか? –

+0

okコードを追加しました – christine

+0

コードは少し切り捨てられていますが、これは一般的には良いですが、より多くの文脈と何が起こっているのかを正確に見てください。 –

答えて

0

あなたは本当に画像をオーバーレイされていません。画像でコントロールをオーバーレイしています。

これを透明にするには、ノートコントロールをスタッフコントロールのにネストする必要があります。

そうではないので、透明度は実際にはの色、つまりフォームを示しています。

セットp.Parent=panel4と、すなわちスタッフにそれらが相対する、それに応じて位置を適合させる..

これは重複コントロールをサポートしていないリサイズ透明度の制限、です。 ネストされたコントロールが正常に動作だけによって、親からそれらをコピーして透明パーツを偽造します。..

注結果として、あなたはノートが重なるか、いずれかによってオーバーラップされていすることができませんことを他のコントロール。

多くの場合、コントロールの使用を中止する方が良い方法です。代わりに、合計を構成するすべての部分を単純に描画することができます。

panel4_Paintイベントでは、一連のe.Graphics.DrawImage(noteImg, x, y)を実行できます。

関連する問題