我真的在烦恼:我想在VB.NET 2008中创建一个Windows窗体应用程序,并且我想创建一个圆形窗口。
我该怎么做?谁能帮我?如何创建不同类型的表单形状?
1
A
回答
2
有些事情你必须做,以使其正常工作。首先,等待OnLoad()方法运行是很重要的。你才知道窗户有多大。当用户以不同的DPI运行视频适配器时,它不会是另一台机器上的设计尺寸。您还必须删除边框和标题,当您为窗口设置形状时,它们不再适用。这会让你重新执行他们所做的工作。至少你想让用户仍然可以移动窗口。
样本形式做这个:
Public Class Form1
Public Sub New()
InitializeComponent()
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.DoubleBuffered = True
End Sub
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
'' Set window shape
Using path As New System.Drawing.Drawing2D.GraphicsPath
path.AddEllipse(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
Me.Region = New Region(path)
End Using
MyBase.OnLoad(e)
End Sub
Private Const WM_NCHITTEST As Integer = &H84
Private Const HTCLIENT As Integer = 1
Private Const HTCAPTION As Integer = 2
Private Const CaptionHeight As Integer = 30
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
'' Detect clicks at top of window to allow it to be moved
If m.Msg = &H84 AndAlso m.Result.ToInt32() = HTCLIENT Then
Dim pos As Point = New Point(m.LParam.ToInt32())
pos = Me.PointToClient(pos)
If pos.Y < CaptionHeight Then m.Result = CType(HTCAPTION, IntPtr)
End If
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
'' Draw a simple caption
e.Graphics.FillRectangle(Brushes.Blue, 0, 0, Me.ClientSize.Width, CaptionHeight)
MyBase.OnPaint(e)
End Sub
End Class
以此为出发点,以实现自己的窗口镶边。您可能需要添加一个让用户关闭窗口的字形。 BackgroundImage属性是为窗口赋予“纹理”的好方法。或者修改OnPaint()来绘制自己的。
3
您可以设置表格的Region
属性。
要创建一个圆形区域,请创建一个GraphicsPath
,请致电AddEllipse
,然后将其传递给构造函数Region
。
1
设置这些属性窗体
1. BackgroundImage = your_Image ' image of shape you want
2. BackColor = Outside_Area_Color ' color of outside area of image
3. FormBorderStyle = None ' to hide border and TitleBar of form
4. TransparentKey = Same_as_BackColor
2
其所谓的不规则形状或不规则形状。这里有一篇很好的文章:http://www.codeproject.com/Tips/149249/Simplest-way-to-implement-irregular-forms-in-NET.aspx
相关问题
- 1. 如何创建不同类型表单的集合?
- 2. 创建不同类型的表达式
- 3. 如何创建不同类的链表?
- 4. GMF如何为连接装饰创建不同的形状
- 5. 如何创建宽度不同的自定义形状
- 6. 为不同类型的客户创建多个注册表单?
- 7. 多态形状类绘制最近创建的任何形状?
- 8. 如何将简单数据集投影到匿名类型的不同形状
- 9. 在codenameone中为不同的表单创建不同的类
- 10. 如何创建圆形UIview而不是矩形形状
- 11. 如何确定包含各种形状的工作表上的形状类型?
- 12. 如何创建不同数据类型的列表,根据类型迭代并执行不同的操作?
- 13. 如何创建UIView的凹面形状
- 14. 为属于不同模型的模型创建独立表单?
- 15. 创建不同类型的用户
- 16. 如何创建与表中记录相同类型的集合?
- 17. 创建CSS3形状?
- 18. 如何创建不同类型的结构数组的数组?
- 19. 如何创建一个不同类型的变量的堆栈?
- 20. Java参数化泛型类型列表创建不同类型的对象
- 21. JNI - 如何创建不同类的库
- 22. 用单一形式创建多个对象(类似的类型)
- 23. jQuery - 从菜单创建形状
- 24. 了解如何创建形状
- 25. 如何使用CSS创建此形状?
- 26. 如何创建这种形状drawble
- 27. 如何用边框创建形状?
- 28. 如何使用Snap.svg创建“U”形状?
- 29. 如何在创建对象到不同类型的数组时创建类型不匹配错误?
- 30. 从单一类型创建不同的POCO