另一个PictureBox顶部的C#PictureBox

时间:2017-02-05 01:33:11

标签: c# winforms picturebox

我希望Tree tree = null; if( family.TryGetValue( lastName, out tree ) ) { var fName = tree.Name; var age = tree.Age; } 位于pbGrade之上(pb =图片框)

pbItemtype

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

enter image description here

2 个答案:

答案 0 :(得分:1)

最佳方法是在Bitmap对象中离线叠加构建图像,然后将构造的图像分配给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;

这假设ImageItemXImageGradeZ是具有透明背景的图像(例如png),这些图像是以这些名称作为项目资源导入的。

例如给定这些资源

Images defined in resources in project

代码将产生这个:

Form showing combined images in PictureBox

答案 1 :(得分:1)

实际上,你可以轻松地做到这一点,实际上你已经做到了

代码工作你还需要更正Location,因为嵌套的PB将保留前一个,因此可能会偏向右下角,可能会留下可见大小新Parent ....:

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..

嵌套控件时,透明度效果很好。但是,当重叠时,它不起作用!

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