Click here to Skip to main content
6,305,776 members and growing! (15,022 online)
Email Password   helpLost your password?
Desktop Development » Miscellaneous » Miscellaneous Controls     Intermediate License: The Code Project Open License (CPOL)

Making Transparent Controls with C# and .NET 3.5

By Nildo Soares de Araujo

This article provides an approach to a Transparent Control that draws an ellipse with real transparent background and a brush that supports transparent colors.
C#, Windows, .NET (.NET 3.5), GDI+, Dev
Posted:11 Jun 2008
Views:22,231
Bookmarked:30 times
Announcements
Loading...
 
Search    
Advanced Search
printPrint   Broken Article?Report       add Share
  Discuss Discuss   Recommend Article Email
11 votes for this article.
Popularity: 4.51 Rating: 4.33 out of 5

1

2
1 vote, 9.1%
3
3 votes, 27.3%
4
7 votes, 63.6%
5
TransparentControl.gif

Introduction

This article provides an approach to a Transparent Control that draws an ellipse with real transparent background and a brush that supports transparent colors.

Using the Code

A sample project TranspControlTest is included in the ZIP file. In addition, you will find a file that contains the source code for the TranspControl.dll. To obtain a background transparent you just need to change the Control style. You can do this by setting the Control style to opaque and changing the CreateParamExStyle property to WS_EX_TRANSPARENT. That’s all.

public TranspControl()
{
     SetStyle(ControlStyles.SupportsTransparentBackColor, true);
      SetStyle(ControlStyles.Opaque, true);
      this.BackColor = Color.Transparent;
}

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x20;
        return cp;
}
}

The included source code and the application example will show what you can do with this transparent control

The control has the following basic properties to be considered:

  1. Opacity: The opacity controls the Control transparency. This affects the background and the fill color. This ranges between 1 and 100.
  2. Background color: Here you select the background color. Full background transparency you will get by selecting the color to Transparent color.
  3. Fill color: Here you will select the color to fill your drawing. Full transparency you will get by selecting the color to Transparent color.
  4. Fore color: This wills the color to draw the contour.

This solution works fine in static applications. It is not recommended for using as an animated control because it will flick during the Form refreshing. If you intend to use it for drawing of lines, shapes, frames, or text then you made the right choice, even so in animated applications.

No-flicking Approach

For animated control applications with filled shapes and transparent background I recommend to use this second solution. See the below image. There is an example of animation using both approaches. Execute the test program and see the animation.

ControlTests_.gif

I made a Circle component to demonstrate how to obtain the no-flicking shape with full transparent background. Please see the included Circle.dll source file. The code is written in a clear manner and speaks for itself.

To obtain full background transparency just changes the Circle background color property to Transparent color.

Hope this can be helpful.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Nildo Soares de Araujo


Member
Nildo Soares de Araujo
C# enthusiast. Experienced Control Systems engineer with expertise in industrial automation. Developed a complete library of Control Systems components such as PID, Integral Control, n-order Filters and many others functions written in SCL language.
Occupation: CEO
Company: Digital Automation Ltda
Location: Brazil Brazil

Other popular Miscellaneous articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 25 of 26 (Total in Forum: 26) (Refresh)FirstPrevNext
GeneralTranspControl - Rev. 1 PinmemberNildo Soares de Araujo6:12 25 Feb '09  
QuestionHow to show opaque background in case of animated transparent control? Pinmembervaibhav_gawali23:59 18 Feb '09  
AnswerRe: How to show opaque background in case of animated transparent control? PinmemberNildo Soares de Araujo3:25 19 Feb '09  
GeneralRe: How to show opaque background in case of animated transparent control? Pinmembervaibhav_gawali1:44 20 Feb '09  
GeneralRe: How to show opaque background in case of animated transparent control? PinmemberNildo Soares de Araujo10:08 20 Feb '09  
QuestionTransparent Control over WebBrowser PinmemberAdilson Carvalho7:46 12 Feb '09  
AnswerRe: Transparent Control over WebBrowser PinmemberNildo Soares de Araujo5:44 13 Feb '09  
Generalinvisible control when running video PinmemberMember 7885707:16 4 Feb '09  
GeneralRe: invisible control when running video PinmemberNildo Soares de Araujo4:20 8 Feb '09  
GeneralQuestion PinmemberYves7:09 20 Nov '08  
GeneralRe: Question PinmemberNildo Soares de Araujo13:22 20 Nov '08  
GeneralRe: Question PinmemberMember 78857019:07 8 Feb '09  
GeneralRe: Question PinmemberNildo Soares de Araujo6:22 9 Feb '09  
GeneralRe: Question PinmemberMember 7885706:14 10 Feb '09  
GeneralRe: Question PinmemberNildo Soares de Araujo8:40 10 Feb '09  
GeneralRe: Question PinmemberMember 415756123:45 20 Mar '09  
GeneralRe: Question PinmemberNildo Soares de Araujo10:28 25 Mar '09  
GeneralI used to do PLC and all that controls systems stuff, then I found C# PinmvpSacha Barber22:55 12 Jun '08  
GeneralRe: I used to do PLC and all that controls systems stuff, then I found C# PinmemberMember 43244855:06 13 Jun '08  
GeneralRe: I used to do PLC and all that controls systems stuff, then I found C# PinmvpSacha Barber5:47 13 Jun '08  
GeneralTitle PinmemberJean-Paul Mikkers11:05 12 Jun '08  
GeneralRe: Title PinmemberMember 43244853:45 13 Jun '08  
QuestionSeems good Pinmembervikas maan0:23 12 Jun '08  
AnswerRe: Seems good PinmemberMember 43244856:34 12 Jun '08  
GeneralRe: Seems good PinmemberMember 432448510:41 12 Jun '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 11 Jun 2008
Editor: Sean Ewington
Copyright 2008 by Nildo Soares de Araujo
Everything else Copyright © CodeProject, 1999-2009
Web17 | Advertise on the Code Project