Je fais une application en C # .NET. J'ai 8 boîtes d'image dedans. J'ai utilisé des images PNG avec un arrière-plan transparent, mais dans mon formulaire, il n'est pas transparent lorsqu'il survole une autre image.
J'utilise Visual Studio 2012. Voici une capture d'écran de mon formulaire:
Une façon de faire est de changer le parent de la zone d'image qui se chevauche en une PictureBox sur laquelle elle chevauche. Le concepteur Visual Studio ne vous autorisant pas à ajouter un PictureBox à un PictureBox, vous devez le faire dans votre code (Form1.cs) et dans la fonction Intializing:
public Form1()
{
InitializeComponent();
pictureBox7.Controls.Add(pictureBox8);
pictureBox8.Location = new Point(0, 0);
pictureBox8.BackColor = Color.Transparent;
}
Il suffit de changer les noms de la boîte à images selon vos besoins. Cela devrait retourner:
J'ai un problème similaire comme celui-ci . Vous ne pouvez pas créer facilement une image transparente, telle qu'une image illustrée en haut de cette page, car les objets .NET Framework et VS .NET sont créés par INHERITANCE! (Utiliser la propriété parent).
J'ai résolu ce problème par RectangleShape
et avec le code ci-dessous, j'ai supprimé l'arrière-plan, Si la différence entre PictureBox
et RectangleShape
n'est pas importante et que cela n'a pas d'importance, vous pouvez utiliser RectangleShape
facilement.
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
}
Essayez d’utiliser une ImageList
ImageList imgList = new ImageList;
imgList.TransparentColor = Color.White;
Chargez l'image comme ceci:
picturebox.Image = imgList.Images[img_index];
Une solution rapide consiste à définir la propriété image pour image1 et la propriété backgroundimage à imag2. Le seul inconvénient est que vous avez les deux images à l'intérieur de la zone d'image, mais que vous pouvez modifier les propriétés de l'arrière-plan en mosaïque, streched, etc. Assurez-vous que la couleur de fond est transparente .J'espère que cela t'aides