好吧,我会在按钮上放一个图像,那个图像有圆角。我该如何实现这一目标?我一直在谷歌搜索和搜索几个小时,仍然没有运气。
答案 0 :(得分:3)
您可以使用Microsoft Visual Basic PowerPacks中的矩形形状。
How to: Draw Shapes with the OvalShape and RectangleShape Controls
上有文档我检查了它在Windows7 x64上VS2013 Express for Windows桌面的C#Windows窗体项目中工作,目标是x86和x64。用户xam报告它也适用于VS2017。
private void rectangleShape1_Click(object sender, EventArgs e)
{
MessageBox.Show("Click!");
}
为方便起见,您可以添加一个新的“工具箱”选项卡并将VB PP控件添加到其中。
答案 1 :(得分:1)
如果您想坚持使用Windows窗体,那么您应该使用图片框并在悬停时制作一些动画等。当您单击它时,它将像按钮一样运行。
或查看这些文章:
http://www.codeproject.com/Articles/15730/RoundButton-Windows-Control-Ever-Decreasing-Circle http://www.codeproject.com/Articles/10303/Elliptical-Circular-Button
但是如果你想要一个更好的布局你也可以使用WPF,但它与windows窗体有些不同。
答案 2 :(得分:0)
我到处寻找解决这个问题的方法,而且似乎很难找到。但是我使用在paint事件期间调用的函数在按钮控件上得到了圆角。
1.必须有视觉工作室,创建一个新项目
2.选择一个新窗体作为新项目
3.在表格中添加2个按钮
4.双击表单上的任意位置以打开代码窗口
5.删除所有代码,包括Form1子标题,并粘贴到下面
Imports System.Drawing.Drawing2D
Public Class Form1
Public Sub buttonBorderRadius(ByRef buttonObj As Object, ByVal borderRadiusINT As Integer)
Dim p As New Drawing2D.GraphicsPath()
p.StartFigure()
'TOP LEFT CORNER
p.AddArc(New Rectangle(0, 0, borderRadiusINT, borderRadiusINT), 180, 90)
p.AddLine(40, 0, buttonObj.Width - borderRadiusINT, 0)
'TOP RIGHT CORNER
p.AddArc(New Rectangle(buttonObj.Width - borderRadiusINT, 0, borderRadiusINT, borderRadiusINT), -90, 90)
p.AddLine(buttonObj.Width, 40, buttonObj.Width, buttonObj.Height - borderRadiusINT)
'BOTTOM RIGHT CORNER
p.AddArc(New Rectangle(buttonObj.Width - borderRadiusINT, buttonObj.Height - borderRadiusINT, borderRadiusINT, borderRadiusINT), 0, 90)
p.AddLine(buttonObj.Width - borderRadiusINT, buttonObj.Height, borderRadiusINT, buttonObj.Height)
'BOTTOM LEFT CORNER
p.AddArc(New Rectangle(0, buttonObj.Height - borderRadiusINT, borderRadiusINT, borderRadiusINT), 90, 90)
p.CloseFigure()
buttonObj.Region = New Region(p)
End Sub
Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint
buttonBorderRadius(sender, 25)
End Sub
Private Sub Button2_Paint(sender As Object, e As PaintEventArgs) Handles Button2.Paint
buttonBorderRadius(sender, 50)
End Sub
End Class
调用函数“buttonBorderRadius(sender,50)”意味着您可以为各个按钮设置不同的borderRadius。
并且因为它使用了对象,你可以将相同的功能应用于图片框和其他控件(尽管不是全部)
所以你可以用“buttonBorderRadius(sender,10)”设置一个10像素的边框半径
和像这样的“buttonBorderRadius(sender,50)”的50像素半径
只需将整数更改为函数中的第二个参数,
第一个参数必须是对象变量