У меня была аналогичная проблема, как это. Вы не можете сделать Transparent picturebox легко, например изображение, показанное в верхней части этой страницы, потому что объекты .NET Framework и VS .NET созданы INHERITANCE! (Используйте родительское свойство).
Я решил эту проблему путем RectangleShape
и кода ниже я удалил фон, , если разница между PictureBox
и RectangleShape
не важно и не имеет значения, вы можете использовать RectangleShape
легко.
private void CreateBox(int X, int Y, int ObjectType)
{
ShapeContainer canvas = new ShapeContainer();
RectangleShape box = new RectangleShape();
box.Parent = canvas;
box.Size = new System.Drawing.Size(100, 90);
box.Location = new System.Drawing.Point(X, Y);
box.Name = "Box" + ObjectType.ToString();
box.BackColor = Color.Transparent;
box.BorderColor = Color.Transparent;
box.BackgroundImage = img.Images[ObjectType];// Load from imageBox Or any resource
box.BackgroundImageLayout = ImageLayout.Stretch;
box.BorderWidth = 0;
canvas.Controls.Add(box); // For feature use
}
Взгляните на http://stackoverflow.com/questions/5522337/c-sharp-picturebox-transparent-background-doesnt-seem-to-work – Binke
возможный дубликат [Сделать перекрытие прозрачного изображения в C# .net] (http://stackoverflow.com/questions/4623165/make-overlapping-picturebox-transparent-in-c-net) – mbeckish
Существует решение, использующее обычный элемент управления, например Panel, ... Мы можем сами нарисовать изображение, однако это сложно для «PictureBox». Даже решение для другого элемента управления не очень хорошо, если вы хотите переместить объект во время выполнения (из-за мерцания). –