vb.net矩形类型 vb画矩形程序代码

VB.NET我要用鼠标轨迹画一个矩形框 然后选中控件。就像星际和魔兽争霸里对部队单位的选中一样~等大神回答

这个类继承自Panel,把它加到你的项目里面,先运行一下,然后从工具箱里把它拖到窗体上,然后再向里面添加其它控件就可以了,支持Shift加选,Alt减选

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、网络空间、营销软件、网站建设、平鲁网站维护、网站推广。

Imports System.Linq

Imports System.Collections

Public Class MyPanel

Inherits Panel

' 选择模式,相交还是包含

Enum SelectMode

Intersects

Contains

End Enum

Dim down As New Point(-1, -1)

Dim rect As Rectangle

Dim selected As New List(Of Control)

Dim editting As IEnumerable(Of Control)

Dim mode As SelectMode = SelectMode.Contains

Dim shift, alt As Boolean

Public Sub New()

Me.DoubleBuffered = True

End Sub

Protected Overrides Sub OnMouseDown(e As MouseEventArgs)

MyBase.OnMouseDown(e)

down = e.Location

editting = selected.ToArray().ToList()

OnMouseMove(e)

End Sub

Protected Overrides Sub OnMouseMove(e As MouseEventArgs)

MyBase.OnMouseMove(e)

If e.Button = Windows.Forms.MouseButtons.Left Then

Dim loc As New Point(Math.Min(down.X, e.X), Math.Min(down.Y, e.Y))

Dim size As New Size(Math.Abs(down.X - e.X), Math.Abs(down.Y - e.Y))

rect = New Rectangle(loc, size)

Dim cs As New List(Of Control)

For Each c In Controls

cs.Add(c)

Next

Dim a = cs.Where(Function(n As Control) (mode = SelectMode.Contains And rect.Contains(n.Bounds)) Or (mode = SelectMode.Intersects And rect.IntersectsWith(n.Bounds)))

If shift Then editting = a.Union(selected) Else If alt Then editting = selected.Except(a) Else editting = a

Invalidate()

End If

End Sub

Protected Overrides Sub OnMouseUp(e As MouseEventArgs)

MyBase.OnMouseUp(e)

down = New Point(-1, -1)

selected = editting.ToList()

editting = Nothing

Invalidate()

End Sub

Protected Overrides Function ProcessKeyPreview(ByRef m As Message) As Boolean

Dim KeyCode As Keys = CInt(m.WParam) And CInt(Keys.KeyCode)

Dim d As Boolean

If m.Msg = H100 Or m.Msg = H104 Then d = True Else If m.Msg = H101 Or m.Msg = H105 Then d = False Else Return MyBase.ProcessKeyPreview(m)

If KeyCode = Keys.ShiftKey Then

shift = d

ElseIf KeyCode = Keys.Menu Then

alt = d

End If

Return MyBase.ProcessKeyPreview(m)

End Function

Protected Overrides Sub OnPaint(e As PaintEventArgs)

MyBase.OnPaint(e)

For Each c As Control In IIf(editting Is Nothing, selected, editting)

e.Graphics.DrawRectangle(New Pen(Color.Gray) With {.DashStyle = Drawing2D.DashStyle.DashDot}, c.Left - 1, c.Top - 1, c.Width + 1, c.Height + 1)

Next

If (down.X  0) Then e.Graphics.DrawRectangle(New Pen(Color.Gray) With {.DashStyle = Drawing2D.DashStyle.DashDot}, rect)

End Sub

End Class

vb.net设计一个rectangle(长方形)类,应具有以下内容:1两个private的成员变量:rectWidth和rectHeight

[1] private rectWidth As double ,rectHeight As double

[2] return rectWidth

[3] rectWidth=value

[4] return rectHeight

[5] rectHeight=value

[6]这个在注释语句里我也不清楚要怎么填,不会是题目搞错了吧。-_-|||

[7] return 2 *( rectWidth+ rectHeight)

[8] return rectWidth * rectHeight

[9] ,[10] 应该是对rectl的width 和height 属性赋值。

messagebox。show(“长方形rect1的周长是:” rectl.GetSize “长方形rect2的面积是:” rectl.GetArea)

vb.net中 如何改变button控件的形状

vb.net中控件都是矩形的,如果一定要看起来是其他形状的,只能用背景图片,一般要三个背景图片,正常时候、鼠标移上时候、按下时候的。分别在按钮的四个事件:MouseHover MouseLeave MouseDown MouseUp的时候更换成相应的背景图片

vb.net怎样改变picturebox控件的形状

'我给你找到了,设置region属性就可

Private Sub PictureBox1_DoubleClick(sender As System.Object, e As System.EventArgs) Handles PictureBox1.DoubleClick

If PictureBox1.Region Is Nothing Then

Dim path As New System.Drawing.Drawing2D.GraphicsPath

path.AddEllipse(0, 0, 200, 200)

PictureBox1.Region = New Region(path)

Else

PictureBox1.Region = Nothing

End If

End Sub

'这个双击图片框使其变形,通过GraphicsPath对象可以作出各种形态来,比如可作出文字形状

Dim stringText As String = "我是谁"

Dim family As New FontFamily("Arial")

Dim myfontStyle As Integer = CInt(FontStyle.Italic)

Dim emSize As Integer = 86

Dim origin As New Point(20, 20)

Dim format As StringFormat = StringFormat.GenericDefault

path.AddString(stringText, family, myfontStyle, emSize, _

origin, format)

PictureBox1.Region = New Region(path)


当前名称:vb.net矩形类型 vb画矩形程序代码
文章路径:http://pwwzsj.com/article/ddojohi.html