Comment rendre picturebox transparent?
je fais une application en C# .NET. J'ai 8 zones de l'image. J'ai utilisé des images PNG avec fond transparent mais dans ma forme il n'est pas transparent quand il vient au-dessus d'une autre image.
j'utilise Visual Studio 2012. C'est une capture d'écran de mon formulaire:
6 réponses
une façon de le faire est de changer le parent de la zone de chevauchement de l'image à la PictureBox sur laquelle il est laper. Puisque Visual Studio designer ne vous permet pas d'ajouter une PictureBox à une PictureBox, cela devra être fait dans votre code (Form1.cs) et dans la fonction D'intériorisation:
public Form1()
{
InitializeComponent();
pictureBox7.Controls.Add(pictureBox8);
pictureBox8.Location = new Point(0, 0);
pictureBox8.BackColor = Color.Transparent;
}
il suffit de changer le nom de la boîte à images à ce que vous avez besoin. Ceci devrait retourner:
GameBoard est le contrôle de type DataGridView; L'image doit être un type de PNG avec un fond de canal alpha transparent;
Image test = Properties.Resources.checker_black;
PictureBox b = new PictureBox();
b.Parent = GameBoard;
b.Image = test;
b.Width = test.Width*2;
b.Height = test.Height*2;
b.Location = new Point(0, 90);
b.BackColor = Color.Transparent;
b.BringToFront();
j'ai eu un problème similaire. Vous ne pouvez pas rendre Transparent picturebox facilement tel que l'image qui s'affiche en haut de cette page, parce que .net Framework et les objets VS .net sont créés par héritage! (Utilisez La Propriété Mère).
j'ai résolu ce problème par RectangleShape
et avec le code ci-dessous j'ai supprimé le fond,
si la différence entre PictureBox
et RectangleShape
n'est pas importante et 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
}
une solution rapide est de définir la propriété image pour image1 et de définir la propriété backgrounddimage pour imag2, le seul inconvénient est que vous avez les deux images à l'intérieur de la zone d'image, mais vous pouvez changer les propriétés de l'arrière-plan en tuile, strié, etc. Assurez-vous que le backcolor soit transparent. Espérons que cette aide
vous pouvez définir le PictureBox
BackColor
proprty à Transparent