C#另一个图片盒上的图片盒

C#另一个图片盒上的图片盒,c#,winforms,picturebox,C#,Winforms,Picturebox,我希望pbGrade位于pbItemtype的顶部(pb=图片框) 我已经试过了,但是pbItemtype甚至没有出现,两个图片框也会改变图像(pbItemtype和pbGrade) 最好的方法是在位图对象中离线构建覆盖图像,然后将构建的图像指定给PictureBox进行显示 例如: int width = 100; int height = 100; Image image = new Bitmap(width, height); using (var graphics = Graphics

我希望
pbGrade
位于
pbItemtype
的顶部(pb=图片框)

我已经试过了,但是pbItemtype甚至没有出现,两个图片框也会改变图像(pbItemtype和pbGrade)


最好的方法是在位图对象中离线构建覆盖图像,然后将构建的图像指定给PictureBox进行显示

例如:

int width = 100;
int height = 100;
Image image = new Bitmap(width, height);

using (var graphics = Graphics.FromImage(image))
{
    graphics.DrawImage(MyApplication.Properties.Resources.ImageItemX, new Rectangle(0, 0, width, height));
    graphics.DrawImage(MyApplication.Properties.Resources.ImageGradeZ, new Rectangle(0, 0, width, height));
}

myPictureBox.SizeMode = PictureBoxSizeMode.Zoom;
myPictureBox.Image = image;
这假设
ImageItemX
ImageGradeZ
是具有透明背景(例如PNG)的图像,作为项目资源导入到这些名称下


例如,考虑到这些资源

代码将生成以下内容:


事实上你可以很容易地做到这一点,事实上你已经做到了

代码可以正常工作,但是您还需要更正
位置,因为嵌套的PB将保留它之前的位置,因此可能会移到右下角,可能会留下新的
父级的可见大小
…:

pbItemtype.BackColor = Color.Transparent;

// Change parent for overlay PictureBox...
pbItemtype.Parent = pbGrade;
// Move it to the top left of the parent:
pbItemtype.Location = Point.Empty;  // or some other position..
当嵌套控件时,透明度效果良好。但是,当重叠它们时,它就不起作用了


(当然,我们看到的代码将交换图像!)

您不可能轻松做到这一点。我知道很多:实际上,OP要求的只是通过PBox查看下面的图片。没问题,只要没有控制重叠….-不过:在飞行中画东西也是一个很好的选择。是的,我想要的是看另一个图片框,另一个图片框工作得很好,必须使用pb顺序,但是是的:P
pbItemtype.BackColor = Color.Transparent;

// Change parent for overlay PictureBox...
pbItemtype.Parent = pbGrade;
// Move it to the top left of the parent:
pbItemtype.Location = Point.Empty;  // or some other position..