wake-up-neo.com

Wie kann ich picturebox transparent machen?

Ich mache eine Anwendung in C # .NET. Ich habe 8 Bilderrahmen darin. Ich habe PNG-Bilder mit transparentem Hintergrund verwendet, ist jedoch in meiner Form nicht transparent, wenn sie über einem anderen Bild erscheint.

Ich verwende Visual Studio 2012. Dies ist ein Screenshot meines Formulars: 

Screenshot of Form

16
Belal Khan

Eine Möglichkeit, dies zu tun, besteht darin, das übergeordnete Feld des überlappenden Bilderrahmens in die PictureBox zu ändern, über die es gelappt wird. Da der Visual Studio-Designer das Hinzufügen einer PictureBox zu einer PictureBox nicht zulässt, muss dies in Ihrem Code (Form1.cs) und in der Intializing-Funktion erfolgen:

public Form1()
{
    InitializeComponent();
    pictureBox7.Controls.Add(pictureBox8);
    pictureBox8.Location = new Point(0, 0);
    pictureBox8.BackColor = Color.Transparent;
}

Ändern Sie einfach die Namen der Bilderrahmen nach Ihren Wünschen. Dies sollte zurückkehren:

enter image description here

46
SuperPrograman

GameBoard steuert den Typ DataGridView; Das Bild sollte vom Typ PNG mit transparentem Alphakanalhintergrund sein.

        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
Stav Bodik

Ich hatte ein ähnliches Problem wie hier .. Sie können eine transparente Bildbox nicht einfach erstellen, z. B. ein Bild, das oben auf dieser Seite angezeigt wird, da .NET Framework und VS .NET-Objekte von INHERITANCE erstellt werden! (Verwenden Sie die übergeordnete Eigenschaft).

Ich habe dieses Problem durch RectangleShape gelöst und mit dem folgenden Code entfernte ich den Hintergrund. Wenn der Unterschied zwischen PictureBox und RectangleShape nicht wichtig ist und keine Rolle spielt, können Sie RectangleShape problemlos verwenden.

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
Hamed Mirzaei

Versuchen Sie es mit einer ImageList

ImageList imgList = new ImageList;

imgList.TransparentColor = Color.White;

Laden Sie das Bild wie folgt:

picturebox.Image = imgList.Images[img_index];
0
tttony

Eine schnelle Lösung besteht darin, die image-Eigenschaft für image1 und die backgroundimage-Eigenschaft auf imag2 zu setzen. Der einzige Nachteil besteht darin, dass sich die beiden Bilder in der Bildbox befinden. Sie können jedoch die Hintergrundeigenschaften in Kacheln, gestreckt usw. ändern. Stellen Sie sicher, dass die Hintergrundfarbe transparent ist .Hoffe das hilft

0
i31nGo