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:

Screenshot of Form

15
demandé sur Termininja 2013-11-11 19:39:21

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:

enter image description here

40
répondu SuperPrograman 2015-12-18 18:50:42

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();

enter image description here

5
répondu Stav Bodik 2016-06-08 16:39:22

essayez d'utiliser un ImageList

ImageList imgList = new ImageList;

imgList.TransparentColor = Color.White;

chargez l'image comme ceci:

picturebox.Image = imgList.Images[img_index];
0
répondu tttony 2013-11-11 15:56:20

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 
}
0
répondu Hamed Mirzaei 2014-02-09 16:44:02

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

0
répondu i31nGo 2014-09-18 10:18:24

vous pouvez définir le PictureBox BackColor proprty à Transparent

-1
répondu Sudhakar Tillapudi 2013-11-11 15:45:17