• 0

[VB .Net] Label Transparency over Pic


Question

I am working on my on going project and have come across a problem. I wan tto have a picture box filling the back ground with 2 labels over it. However, when I set the label background color to Web/Transparent, the background still comes out grey when I run the program and this is a problem. How do I make it so that the label is truely transparent and you see the contents of the picture box behind it?

Link to comment
https://www.neowin.net/forum/topic/66887-vb-net-label-transparency-over-pic/
Share on other sites

Recommended Posts

  • 0

Hmmm... i had the exact same problem with .NET... This is why i still use VB6 for most of my work, rather than using VB .NET which causes me a lot of headaches with the new structure... Some changes in .NET are really stupid, and create big incompatabilities... I believe the problem with the label (IF it is a problem) makes my life difficult so when i HAVE to do it, i use VB6... I would also be interested in a solution about this issue... Anyone knows?

/Raptor

  • 0

Ok now here is now it works!

Conclusion: Use Form1.BackgroundImage or Panel1.BackgroundImage instead of PictureBox1.Image or PictureBox1.BackgroundImage

And when you set Label1.Backcolor to Transparece, the background of Label1 actually goes to the background or back colour of the form. I suggest you to set the image into Form1.BackgroundImage and it will work! (Or you can try use Panel, too)

post-47-1048021474.jpg

  • 0

When a label's background colour is set to Transparent, it inherits the background colour of its parent control. IIRC, a PictureBox cannot be the parent of another control, so you'll never be able to get the PictureBox's image to show through. You need to do as no name said and put the background image on a panel or other control that can be a parent.

--

Danny Smurf

  • 0
  no name? said:
Well, try this...

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 ? ? ? ?Label1.BackColor = System.Drawing.Color.Transparent
End Sub

And here's the screen shot...

it doesn't:(ork :( i duno I guess I'll have to forget being able to resize the form.

  • 0
  bangbang023 said:
  no name? said:
Well, try this...

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 ? ? ? ?Label1.BackColor = System.Drawing.Color.Transparent
End Sub

And here's the screen shot...

it doesn't:(ork :( i duno I guess I'll have to forget being able to resize the form.

what do you mean resize?? tell me what exactly you wanna do and i will figure it out for you. i thought you just wanna put some labels on to picture box. btw, that code does work in my .ne:stho :s

  • 0

Why not just override the panel's onpaint and write your own code to size the bitmap? Better yet, since panel doesn't allow double-buffering, create a user control that inherits from panel and use SetStyle to setup double-buffering.

public class UserPanel : System.Windows.Forms.Panel
	{
  /// <summary> 
  /// Required designer variable.
  /// </summary>
  private System.ComponentModel.Container components = null;

  public UserPanel()
  {
 	 // This call is required by the Windows.Forms Form Designer.
 	 InitializeComponent();

 	 // TODO: Add any initialization after the InitializeComponent call
 	 SetStyle(ControlStyles.AllPaintingInWmPaint | 
        ControlStyles.UserPaint |
        ControlStyles.DoubleBuffer, true );
  }

As far as the label not drawing transparent, what is its FlatStyle property set to? I think that some of the settings will not draw transparent( e.g. System ). Set it to Standard and it should draw transparent. If that doesn't work, again, you could override OnPaint and used the DrawString method to write text over the image. It isn't that much work to do so.

The pics have a panel that resizes the image, and a string drawn over it with DrawString. Ugly, I know, but you could probably do something nice with it.

UserControl.jpg

UserControl2.jpg

Edited by weenur
  • 0

So what if it's c# and not vb.net? you can do the same thing. The framework is the same. You can override painting in VB, you can create controls in VB.

I'll try and write this in VB.net just to show you how to do it. Granted, I don't write alot in VB so this may take a while.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Let me guess, just big hyped cut scenes for what is really just more run around in the same old static urban zone machine gun vs. sniper game play.
    • I am not seeing a huge difference there.
    • This is what I came here to say even if just for a dedicated Windows PC gaming box. Gaming is the only use case have to use Windows these days.
    • The Outer Worlds 2 gets an October release date, reveals companion details by Pulasthi Ariyasinghe After Avowed, Obsidian Entertainment's next grand RPG was already revealed to be releasing in 2025, but during the Xbox Games Showcase today, it finally received a firm release date: October 29. Check out the new story trailer above. While the original was set in Halcyon, this time, the story is set in Arcadia, a brand-new setting that's described as a lawless frontier. Also cut off from Earth, this land is pressured by human conflicts as well as mysterious space-time rifts. "You’ve been sent in as an Earth Directorate agent, but how you handle the mission – who you help, hinder, or exploit – is entirely your call," says Obsidian today. "Build your character with expanded traits, flaws, and backgrounds that shape every decision and unlock new ways to fight, sneak, talk, or blow things up." The RPG will let players get involved with three clashing factions this time: The Protectorate, Auntie’s Choice, and The Order of the Ascendant. Each of them is attempting to advance their own version of humanity's optimal future. Each of these factions has tout own hub areas, followers, audio design, and propaganda elements, with the war between the trio changing all of these as the story progresses depending on player choices. "RPG systems have been reimagined for this sequel to give players more freedom and more flavor," adds the company. "For example, traits and flaws dynamically evolve based on how you play. Steal enough and you’ll be offered Kleptomaniac, which boosts loot sales but risks auto-theft when you so much as glance at an item." Obsidian also detailed the companions players will be able to meet and ally with in their journeys: Niles: Another Earth Directorate recruit torn between duty and defection. Inez: A former experiment from Auntie’s Choice with a grafted combat edge and a moral core. Aza: A chaos-loving Rift worshipper with a taste for violence and room to grow – maybe. Marisol: A stoic killer from the Order of the Ascendant with calculations to settle. Tristen: A walking tank and judge from the Protectorate, looking to dispense justice – or redefine it. Valerie: A floating, chirping support unit with unexpected upgrades and untapped potential. The Outer Worlds 2 is releasing on October 29, 2025 across PC, Xbox Series X|S, and PlayStation 5. As usual for an Xbox game, it will be available to Game Pass subscribers on day one for no extra cost. Don't forget that Obsidian also has Grounded 2 releasing next month into early access too.
    • I love space RPGs, and this one will no doubt scratch that itch. Im still modding the crap out of Starfiled. Can't wait.
  • Recent Achievements

    • Reacting Well
      BlakeBringer earned a badge
      Reacting Well
    • Reacting Well
      Lazy_Placeholder earned a badge
      Reacting Well
    • Dedicated
      Epaminombas earned a badge
      Dedicated
    • Veteran
      Yonah went up a rank
      Veteran
    • First Post
      viraltui earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      472
    2. 2
      +FloatingFatMan
      265
    3. 3
      ATLien_0
      234
    4. 4
      snowy owl
      224
    5. 5
      Edouard
      174
  • Tell a friend

    Love Neowin? Tell a friend!