• 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

    • Lenovo announces the most powerful ARM-based Chromebook with an OLED display by Pradeep Viswanathan Lenovo today announced the Lenovo Chromebook Plus 14, its most powerful ARM-based Chromebook. This Chromebook is powered by the MediaTek Kompanio Ultra 910 processor, which features an NPU that can deliver up to 50 TOPS of AI performance. The Chromebook Plus 14 comes with a 14-inch OLED display, with optional touchscreen models. Customers can customize this laptop with up to 16 GB of RAM based on their performance needs. Thanks to the power-efficient SoC, Lenovo claims that this Chromebook can last up to 17 hours on a single charge, the longest battery life on a Chromebook Plus. The Lenovo Chromebook Plus 14 is now available for purchase in the US, starting at $649 from Best Buy and Lenovo’s official website. To make the purchase more valuable, Google is offering a one-year subscription to its Google AI Pro plan (a $240 value) with every Chromebook Plus. To take advantage of the powerful on-device AI capabilities of the Lenovo Chromebook Plus 14, Google is releasing the following two exclusive AI features: Smart grouping: Users can use AI to organize open Chrome tabs and documents into logical groups. Image editing in the Gallery app: The Gallery app can be used to remove backgrounds, make stickers, and more. Apart from the above exclusive features, Google is also releasing the following updates to all Chromebook Plus models starting today: Select to search & Text capture: A Google Lens-like capability is now available on Chromebooks. Users can just long-press the on-screen launcher button or use the screenshot tool to select anything on their screen for instant Google Search results. Users can also use the new "Text capture" to automatically extract text from images and send it to Google Workspace apps or calendars as editable text. The Quick Insert (QI) key, which was introduced earlier this year, now allows users to easily generate images using AI in addition to its existing capabilities. The new "simplify" feature within "Help me read" will help students convert complex language into more understandable content. Google’s popular NotebookLM research and note-taking app is now pre-installed on every Chromebook Plus. Netflix’s popular Squid Game: Unleashed game is coming to Chromebooks as an optimized desktop app with keyboard and mouse controls and some exclusive in-game items, including skins. With its high‑performance, premium hardware and advanced AI features, the new Lenovo Chromebook Plus 14 is trying to position itself as a strong contender against Windows laptops in the premium segment.
    • Sounds ok. More competition is better for the consumer/user.
    • To be fair, GOG Galaxy, which has been a launcher for multiple platforms from day 1 still works really well. It just runs whichever launcher process a game needs in the background, and kills it when you exit the game. Of course it only works for launching games, not the storefronts, chat, discussions etc - but as a way of organising your games library, seeing which titles you own on multiple services, it works really well. Sounds like MS will be doing exactly the same thing.
    • It makes more sense when you realize this is for the handhelds, and the Xbox app is likely what's going to control/activate the "Xbox full-screen experience" that disables unneeded desktop services and such.
    • I'm not against the idea...it just isn't going to work. We are already dealing with multiple launcher issues, between game stores like Steam and games that require their own launcher. There is no way adding a 3rd layer makes it better for anyone. Now IF game studios universally moved away from their own proprietary launchers in favor of a universal launcher like this, that might be cool, but even if the launcher is fully capable of providing all the features they want (which I highly doubt), then I still doubt companies would choose it over their software...we all know companies want to run as much software as possible on our computers, and something like a launch that has an excuse the run in the background for reasons, even better.
  • Recent Achievements

    • Week One Done
      fredss earned a badge
      Week One Done
    • Dedicated
      fabioc earned a badge
      Dedicated
    • One Month Later
      GoForma earned a badge
      One Month Later
    • Week One Done
      GoForma earned a badge
      Week One Done
    • Week One Done
      ravenmanNE earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      650
    2. 2
      Michael Scrip
      226
    3. 3
      ATLien_0
      219
    4. 4
      +FloatingFatMan
      144
    5. 5
      Xenon
      137
  • Tell a friend

    Love Neowin? Tell a friend!