C#如何设置Windows按钮的边框宽度? 5
3个回答
展开全部
这是我昨晚写的,由于宿舍停电了,没能发给你,今天补上。
Form1_Paint是窗体 重绘事件 ,弄错了就看不到效果了。好了 上代码:
你上图片后,由于我的线条是画在窗体上的,所以被遮盖了。如果你要频繁修改panel里的图片的话,那么每次画完后就不能清空线条集合,得留着。然后就把窗体的重绘事件改成 panel的重绘事件,让画图是针对panel的,无论窗体怎么变都不关panel的事,修改后的代码:
/* 保存线条的集合,每个线条又两个坐标构成(两点画一条直线) */
List<Point[]> lineList = new List<Point[]>();
private void Form1_Load(object sender, EventArgs e)
{
panel1.BackColor = Color.Transparent; //如果不设置成透明,将看不到效果
panel1.BorderStyle = BorderStyle.FixedSingle; //顺便把panel的边框也显示出来
}
/// <summary>
/// 切割你的panel,切割写成方法后,以后你想分几份就几份,可以是 2x10 、
///5x13 、10x10 总之随便你了
/// </summary>
/// <param name="row">你想切成几行?</param>
/// <param name="col">你想切成几列?</param>
private void CutsPanel(int row, int col)
{
Point[] line = null; //线条坐标变量
/* 注意,由于有时切割得太细,所以会有误差, 如 20x20 */
int rowCutValue = panel1.Width / row; //行分割量 = 宽 除以 行
int colCutValue = panel1.Height / col; //列分割量 = 高 除以 列
int x = 0;
int y = 0;
/* 先分割行 */
for (int i = 0; i < row - 1; i++)
{
line = new Point[2]; //每次都是新直线,所以要new一下,避免覆盖原来的线条
x += rowCutValue; //注意是 +=号,因为每增加一条分割线就要向后移一个行分割量
line[0] = new Point(x, 0); //此条分割线的上端:在panel原y轴不变,但是x轴的值变为 x + rowCutValue
line[1] = new Point(x, panel1.Height); //此条分割线的下端:就是上端位置下移panel的高度
lineList.Add(line); //把所有线条添加到集合中去,待会一起画到panel上去
}
/* 再分割列,方法都一样 */
for (int i = 0; i < col - 1; i++)
{
line = new Point[2];
y += colCutValue;
line[0] = new Point(0, y); //此条分割线的左端:在panel原x轴不变,但是y轴的值变为 y + colCutValue
line[1] = new Point(0 + panel1.Width, y); //此条分割线的右端:就是左端位置右移panel的宽度
lineList.Add(line); //把所有线条添加到集合中去,待会一起画到panel上去
}
/* 添加完毕,准备使用 panel1_Paint事件,用e.Graphics.DrawLine(Pen pen,Point p1, Point p2)划线 */
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
//e.Graphics.DrawLine(new Pen(Color.Black,2),new Point(10,10), new Point(50,50));
Pen pen = new Pen(Color.Black, 2); //定义一个钢笔:黑色,画笔大小 2
/* 用循环,把所有的线都画上去; */
for (int i = 0; i < lineList.Count; i++)
{
Point p1 = lineList[i][0]; //这里你应该看得懂吧? 分别获取存进集合里的数组里的 两个点坐标
Point p2 = lineList[i][1];
/* 画分割线 */
e.Graphics.DrawLine(pen, p1, p2);
}
}
private void button1_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(2, 2); //调用方法把panel分割成 2x2 的网格
//CutsPanel(21, 21); //可以是 21x21 哟
panel1.Refresh(); //刷新panel,不然看不到效果
}
private void button2_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(3, 3); //调用方法把panel分割成 3x3 的网格
panel1.Refresh(); //刷新panel,不然看不到效果
}
private void button3_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(4, 4); //调用方法把panel分割成 4x4 的网格
panel1.Refresh(); //刷新panel,不然看不到效果
}
没改多少代码,希望你能自己看懂改哪些地方了,不思考的话学起很慢的。加油吧
Form1_Paint是窗体 重绘事件 ,弄错了就看不到效果了。好了 上代码:
你上图片后,由于我的线条是画在窗体上的,所以被遮盖了。如果你要频繁修改panel里的图片的话,那么每次画完后就不能清空线条集合,得留着。然后就把窗体的重绘事件改成 panel的重绘事件,让画图是针对panel的,无论窗体怎么变都不关panel的事,修改后的代码:
/* 保存线条的集合,每个线条又两个坐标构成(两点画一条直线) */
List<Point[]> lineList = new List<Point[]>();
private void Form1_Load(object sender, EventArgs e)
{
panel1.BackColor = Color.Transparent; //如果不设置成透明,将看不到效果
panel1.BorderStyle = BorderStyle.FixedSingle; //顺便把panel的边框也显示出来
}
/// <summary>
/// 切割你的panel,切割写成方法后,以后你想分几份就几份,可以是 2x10 、
///5x13 、10x10 总之随便你了
/// </summary>
/// <param name="row">你想切成几行?</param>
/// <param name="col">你想切成几列?</param>
private void CutsPanel(int row, int col)
{
Point[] line = null; //线条坐标变量
/* 注意,由于有时切割得太细,所以会有误差, 如 20x20 */
int rowCutValue = panel1.Width / row; //行分割量 = 宽 除以 行
int colCutValue = panel1.Height / col; //列分割量 = 高 除以 列
int x = 0;
int y = 0;
/* 先分割行 */
for (int i = 0; i < row - 1; i++)
{
line = new Point[2]; //每次都是新直线,所以要new一下,避免覆盖原来的线条
x += rowCutValue; //注意是 +=号,因为每增加一条分割线就要向后移一个行分割量
line[0] = new Point(x, 0); //此条分割线的上端:在panel原y轴不变,但是x轴的值变为 x + rowCutValue
line[1] = new Point(x, panel1.Height); //此条分割线的下端:就是上端位置下移panel的高度
lineList.Add(line); //把所有线条添加到集合中去,待会一起画到panel上去
}
/* 再分割列,方法都一样 */
for (int i = 0; i < col - 1; i++)
{
line = new Point[2];
y += colCutValue;
line[0] = new Point(0, y); //此条分割线的左端:在panel原x轴不变,但是y轴的值变为 y + colCutValue
line[1] = new Point(0 + panel1.Width, y); //此条分割线的右端:就是左端位置右移panel的宽度
lineList.Add(line); //把所有线条添加到集合中去,待会一起画到panel上去
}
/* 添加完毕,准备使用 panel1_Paint事件,用e.Graphics.DrawLine(Pen pen,Point p1, Point p2)划线 */
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
//e.Graphics.DrawLine(new Pen(Color.Black,2),new Point(10,10), new Point(50,50));
Pen pen = new Pen(Color.Black, 2); //定义一个钢笔:黑色,画笔大小 2
/* 用循环,把所有的线都画上去; */
for (int i = 0; i < lineList.Count; i++)
{
Point p1 = lineList[i][0]; //这里你应该看得懂吧? 分别获取存进集合里的数组里的 两个点坐标
Point p2 = lineList[i][1];
/* 画分割线 */
e.Graphics.DrawLine(pen, p1, p2);
}
}
private void button1_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(2, 2); //调用方法把panel分割成 2x2 的网格
//CutsPanel(21, 21); //可以是 21x21 哟
panel1.Refresh(); //刷新panel,不然看不到效果
}
private void button2_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(3, 3); //调用方法把panel分割成 3x3 的网格
panel1.Refresh(); //刷新panel,不然看不到效果
}
private void button3_Click(object sender, EventArgs e)
{
lineList.Clear(); //每次重新画才清空线条集合
CutsPanel(4, 4); //调用方法把panel分割成 4x4 的网格
panel1.Refresh(); //刷新panel,不然看不到效果
}
没改多少代码,希望你能自己看懂改哪些地方了,不思考的话学起很慢的。加油吧
展开全部
style="border: solid 2px black"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个有多种设置方法,你可以直接在控件上写样式style,如果用的是服务器控件,可以直接设置控件的属性,属性里面提供了很多样式设置。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询