我正在填充一些漂亮的漂亮渐变填充(通过重写OnPaint事件)的一些VB.NET 2005 WinForms窗体的背景。这工作正常,但表单上的各种标签等显示具有坚实的背景,即使我将BackColor设置为Color.Transparent后。设置窗体本身的透明度键似乎会影响到这一点,但我不能让标签具有真正透明的BackColor,有没有简单的方法来解决这个问题,还是我看着自定义控件等?VB.NET渐变填充窗体上的透明控件背景?
1
A
回答
4
为您的项目添加一个新类并粘贴下面显示的代码。建立。将新控件从工具箱的顶部放到表单上。
Public Class TransparentLabel
Inherits Label
Public Sub New()
Me.SetStyle(ControlStyles.Opaque, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT
Return cp
End Get
End Property
End Class
闪烁可能是明显的,没有修复。
1
一些实验后,我发现,对于gradiant填充形式的背景和保持透明度的标签了以下工作:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim formGraphics As Graphics = e.Graphics
Dim gradientBrush As New LinearGradientBrush(New Point(0, Height), New Point(0, 0), Me.AppSettings.FormGradiantFrom, Me.AppSettings.FormGradiantTo)
formGraphics.FillRectangle(gradientBrush, ClientRectangle)
End Sub
并在窗体加载事件:
SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer Or _
ControlStyles.ResizeRedraw Or ControlStyles.UserPaint, True)
相关问题
- 1. Android渐变背景渐变为透明
- 2. jVectormap渐变背景填充
- 3. 窗体的透明背景(Windows窗体)
- 4. 窗体上的透明背景
- 5. 透明窗体背景HTML
- 6. 使窗体背景透明
- 7. vb带渐变的透明背景
- 8. 渐变笔触与透明背景
- 9. 与透明背景和渐变边框
- 10. Android渐变不填充背景
- 11. 透明渐变反射 - VB.NET?
- 12. VB.Net BufferedGraphics透明背景
- 13. VB.NET形式透明背景
- 14. 背景之间不需要的填充背景渐变
- 15. 工具栏与渐变背景设置标题背景透明
- 16. 在渐变背景上的透明图像
- 17. 线性渐变背景图像上的不透明度
- 18. 在系统上的透明背景::窗口::窗体::形式
- 19. WPF窗口用透明的含背景不透明控制
- 20. 在纯色背景上添加透明渐变
- 21. 使窗体半透明,以查看窗体的背景图像
- 22. 调整窗体背景的不透明度不改变
- 23. 渐变背景上的文字渐变
- 24. 填充窗口背景
- 25. 标签控件的渐变背景Powershell
- 26. 带上不透明度的背景0.5除了弹出窗体
- 27. 字体背后的透明背景
- 28. DIV上的透明背景
- 29. 带有半透明渐变色的png的png背景显示白色背景
- 30. Safari中的颜色背景中的透明渐变问题
我实现了解决方案描述但是我遇到了一个问题:当我拖动我的表单时,它在之前位置捕获的背景被拖动到新位置...... – 2010-09-01 16:56:01