Transparent Form surface

T

tommaso.gastaldi

I found useful to use transparent controls like:

'----------------------------------------------------------------------------------
Public Class UserControlTransp
Inherits System.Windows.Forms.UserControl

#Region " Windows Form Designer generated code "
....
#End Region

Protected Overrides ReadOnly Property CreateParams() As
System.Windows.Forms.CreateParams
Get
Dim MyParams As CreateParams = MyBase.CreateParams()
MyParams.ExStyle = MyParams.ExStyle Or &H20
Return MyParams
End Get
End Property

Protected Overrides Sub OnPaintBackground(ByVal e As
System.Windows.Forms.PaintEventArgs)
' for transparency
End Sub

Protected Overrides Sub OnPaint(ByVal e As
System.Windows.Forms.PaintEventArgs)
' Any drawing here ...
ControlPaint.DrawBorder3D(e.Graphics, New Rectangle(10, 10,
200, 100), Border3DStyle.Etched)
e.Graphics.FillEllipse(New SolidBrush(Color.FromArgb(100, 120,
200, 255)), New Rectangle(30, 30, 100, 100))
End Sub

End Class

'----------------------------------------------------------------------------------

this allows to draw on a trasparent control surface anything you want.

Does anybody know the corresponding instructions to do the same with a
Form?

(clearly this is different by setting the form opacity, and allows for
instance to draw sharp
pictures on a transparent surface: opacity would instead be inherited
by images drawn on the form).

-tom
 
G

gene kelley

I found useful to use transparent controls like:

'----------------------------------------------------------------------------------
Public Class UserControlTransp
Inherits System.Windows.Forms.UserControl

#Region " Windows Form Designer generated code "
...
#End Region

Protected Overrides ReadOnly Property CreateParams() As
System.Windows.Forms.CreateParams
Get
Dim MyParams As CreateParams = MyBase.CreateParams()
MyParams.ExStyle = MyParams.ExStyle Or &H20
Return MyParams
End Get
End Property

Protected Overrides Sub OnPaintBackground(ByVal e As
System.Windows.Forms.PaintEventArgs)
' for transparency
End Sub

Protected Overrides Sub OnPaint(ByVal e As
System.Windows.Forms.PaintEventArgs)
' Any drawing here ...
ControlPaint.DrawBorder3D(e.Graphics, New Rectangle(10, 10,
200, 100), Border3DStyle.Etched)
e.Graphics.FillEllipse(New SolidBrush(Color.FromArgb(100, 120,
200, 255)), New Rectangle(30, 30, 100, 100))
End Sub

End Class

'----------------------------------------------------------------------------------

this allows to draw on a trasparent control surface anything you want.

Does anybody know the corresponding instructions to do the same with a
Form?

(clearly this is different by setting the form opacity, and allows for
instance to draw sharp
pictures on a transparent surface: opacity would instead be inherited
by images drawn on the form).

-tom


See if this is what you are looking for if VB2005:

Set Form's Backcolor and TransparencyKey colors to same color.
Any control with a Backcolor other than the TransparencyKey color, or,
any drawn graphics using non-key colors will be dispalyed on a
transparent form background.

With a borderless form, this is one way to create an irregular shaped
form.

Gene
 
T

tommaso.gastaldi

Hi Gene, thank you

I am aware of the method you describe. What I was aiming to find is
something that let me use the form as a purely transparent surface
where to draw on.

Setting the transparency key is something slightly different. It will
also affect the drawing.
And, more importantly, the color removal id done very badly and along
irregular borders one can often see pixels of the masked color.

I was just hoping there is a simple way to have a clean graphics where
one can draw and that, at the same time, can be managed as a form...

-tom

gene kelley ha scritto:
 
T

tommaso.gastaldi

Thanks Ken, that's a nice video!

I am beginning to think that to achieve this effect it is necessary to
define a "floating transparent control" (i.e. whose parent is actually
the desktop). I think I have read somewhere about that technique,
although I am not sure where...

Ken ha scritto:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top