2016-12-09 149 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并相应地适应的位置,即,使它们相对于该人员..

这是的WinForms透明度,这不支持重叠控制的限制。 嵌套控件将正常工作,但只能通过从父复制它们伪装透明部分..

注意,作为一个结果,你将不能够有音符相互重叠或任何重叠其他控件。

经常放弃使用控件是更好的方法;相反,可以简单地绘制组成总数的所有部分。

因此,您可以在panel4_Paint事件中执行一系列e.Graphics.DrawImage(noteImg, x, y)