正文
vb.net边框重绘 vbnet datagridview 重绘
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
请问vb中的 PaintPicture在vb.net中代码是什么。最好有实例
获取控件的Graphic对象,绘图方法都集中在了该对像中了。
1. 通过控件GreateGrapic方法获得
2. Paint 事件参数e中也有此对象
相应的图形方法是DrawImage,vb.net中没有自动重绘功能,图形不是持久的,所以应当在Paint事件中绘图。
Private Sub PictureBox2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
e.Graphics.SetClip(e.ClipRectangle)
e.Graphics.DrawImage(PictureBox1.Image, New Rectangle(0, 0, PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height), New Rectangle(5, 5, 100, 100), GraphicsUnit.Pixel)
End Sub
请问如何改变vb.net listbox的选中项高度
重绘事件可以通过反复改变DrawMode 的值来实现!
ListBox1.DrawMode = DrawMode.OwnerDrawFixed
ListBox1.DrawMode = DrawMode.OwnerDrawVariable
我对你用MeasureItem事件搞定某项高度很迷茫,那个事件是得不到list的当前项的啊?
如下,这个判断时Me.ListBox1.SelectedIndex在MeasureItem事件里一直是-1啊!
If e.Index = Me.ListBox1.SelectedIndex Then
e.ItemHeight = 22
End If
vb.net 无边框窗体的问题
设置窗体的text为空,设置窗体的controlbox属性为false,设置窗体的FormBorderStyle 属性为Sizable,就可以改变窗体大小了,并且可以在任务栏点击。
VB.NET 如何去掉 GroupBox 控件的边框?
工程里面添加一个类,命名为myGroupBox,代码如下:
Imports System.ComponentModel
Imports System.Drawing.Drawing2D
Public Class myGroupBox
Inherits GroupBox
Public Sub New()
MyBase.BackColor = Color.Transparent
End Sub
Browsable(False) _
Public Overrides Property BackColor() As Color
Get
Return MyBase.BackColor
End Get
Set(value As Color)
MyBase.BackColor = value
End Set
End Property
Private m_backColor As Color = Color.Transparent
Public Property ActualBackColor() As Color
Get
Return Me.m_backColor
End Get
Set(value As Color)
Me.m_backColor = value
End Set
End Property
Protected Overrides Sub OnPaint(e As PaintEventArgs)
Dim tSize As Size = TextRenderer.MeasureText(Me.Text, Me.Font)
Dim borderRect As Rectangle = e.ClipRectangle
borderRect.Y += tSize.Height / 2
borderRect.Height -= tSize.Height / 2
Dim gPath As GraphicsPath = CreatePath(0, borderRect.Y, CSng(Me.Width - 1), borderRect.Height - 1, 5, True, _
True, True, True)
e.Graphics.FillPath(New SolidBrush(ActualBackColor), gPath)
e.Graphics.DrawPath(New Pen(Me.BackColor), gPath)
borderRect.X += 6
borderRect.Y -= 7
e.Graphics.DrawString(Me.Text, Me.Font, New SolidBrush(Me.ForeColor), borderRect)
End Sub
Public Function CreatePath(x As Single, y As Single, width As Single, height As Single, radius As Single, _
RoundTopLeft As Boolean, RoundTopRight As Boolean, RoundBottomRight As Boolean, RoundBottomLeft As Boolean) As GraphicsPath
Dim xw As Single = x + width
Dim yh As Single = y + height
Dim xwr As Single = xw - radius
Dim yhr As Single = yh - radius
Dim xr As Single = x + radius
Dim yr As Single = y + radius
Dim r2 As Single = radius * 2
Dim xwr2 As Single = xw - r2
Dim yhr2 As Single = yh - r2
Dim p As New GraphicsPath()
p.StartFigure()
'Top Left Corner
If RoundTopLeft Then
p.AddArc(x, y, r2, r2, 180, 90)
Else
p.AddLine(x, yr, x, y)
p.AddLine(x, y, xr, y)
End If
'Top Edge
p.AddLine(xr, y, xwr, y)
'Top Right Corner
If RoundTopRight Then
p.AddArc(xwr2, y, r2, r2, 270, 90)
Else
p.AddLine(xwr, y, xw, y)
p.AddLine(xw, y, xw, yr)
End If
'Right Edge
p.AddLine(xw, yr, xw, yhr)
'Bottom Right Corner
If RoundBottomRight Then
p.AddArc(xwr2, yhr2, r2, r2, 0, 90)
Else
p.AddLine(xw, yhr, xw, yh)
p.AddLine(xw, yh, xwr, yh)
End If
'Bottom Edge
p.AddLine(xwr, yh, xr, yh)
'Bottom Left Corner
If RoundBottomLeft Then
p.AddArc(x, yhr2, r2, r2, 90, 90)
Else
p.AddLine(xr, yh, x, yh)
p.AddLine(x, yh, x, yhr)
End If
'Left Edge
p.AddLine(x, yhr, x, yr)
p.CloseFigure()
Return p
End Function
End Class
工具栏会出现一个myGroupBox控件,放入窗体,你会发现边框没了。
VB中窗体绘图在最小化后消失,如何解决?
当窗体被隐藏之后,在窗体重新出现时,系统将触发Paint事件,重绘整个窗体,此时如果Paint方法为空,那么您使用graphic对象绘制的图将全部消失。
要使您绘制的图能始终出现,您就必须在Paint事件触发时,在其方法中添加绘制窗体的代码。由于您的图是任意的,所以您可以通过使用一个全局的数组或数据结构存储在Form上的图像信息,然后在Form_Paint方法中读取图像信息并重绘。如果Form上绘制了新的图像,那么您可以将这个图像信息添加到全局的数组或数据结构中,以保证在Form上始终是正确的图像。
另外:
VB.NET2008中的AutoRedraw问题
.NET 2009-05-04 15:55:22 阅读44 评论0 字号:大中小
VB6中的PictureBox控件的有AutoRedraw属性,设置为True,则窗口最小化或被覆盖后重新打开窗口,原来的图形还在(使用Line等函数画的图形),但VB.NET没有了这个属性,为此烦了好久,MSDN上也没有找到明确的代用方法,上星期去书店翻了翻,终于明白怎么会事.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Bmp As Bitmap
Dim Gra As Graphics
Dim Pen As New Pen(Color.White)
Bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height)
Gra = Graphics.FromImage(Bmp)
Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!
Gra.DrawArc(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia, 0, 360)
Gra.DrawLine(Pen, 0, 0, PictureBox1.Width / 2.0!, PictureBox1.Height / 2.0!)
PictureBox1.Image = Bmp
End Sub
上面代码画的图形在最小化后重新打开图形还在,下面的则没有了.
Private Sub PictureBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick
Dim Gra As Graphics = PictureBox1.CreateGraphics()
Dim Pen As New Pen(Color.Magenta)
Dim Dia As Single = Math.Min(PictureBox1.Height, PictureBox1.Width) * 0.5!
Gra.DrawRectangle(Pen, (PictureBox1.Width - Dia) / 2.0!, (PictureBox1.Height - Dia) / 2.0!, Dia, Dia)
End Sub
希望对你有帮助!
vb.net边框重绘的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vbnet datagridview 重绘、vb.net边框重绘的信息别忘了在本站进行查找喔。