C# 数字上下框线宽

C# 数字上下框线宽,c#,numericupdown,C#,Numericupdown,我的c#minipaint代码快用完了。我想再增加一件事,那就是我可以通过numericupadown框改变我要画的线的厚度(宽度),我正试图让它工作一个多小时。有人能帮我吗?有简单的方法吗?(nud1是numeric updown框)在数字上下值更改事件中,更改您正在使用的笔的厚度,我建议将当前颜色存储在一个变量中,您可以在重新初始化时在值更改事件中将其分配回笔 这将显示System.Drawing中笔类的详细信息 using System; using System.Collections.

我的c#minipaint代码快用完了。我想再增加一件事,那就是我可以通过numericupadown框改变我要画的线的厚度(宽度),我正试图让它工作一个多小时。有人能帮我吗?有简单的方法吗?(nud1是numeric updown框)

在数字上下值更改事件中,更改您正在使用的笔的厚度,我建议将当前颜色存储在一个变量中,您可以在重新初始化时在值更改事件中将其分配回笔

这将显示System.Drawing中笔类的详细信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MiniPaint
{
    public partial class Form1 : Form
    {
        Graphics g;
        Pen p = new Pen(Color.Black, 1);
        Point sp = new Point(0, 0);
        Point ep = new Point(0, 0);
        int k = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void red_Click(object sender, EventArgs e)
        {
            p.Color = red.BackColor;
            default1.BackColor = red.BackColor;
        }

        private void green_Click(object sender, EventArgs e)
        {
            p.Color = green.BackColor;
            default1.BackColor = green.BackColor;
        }

        private void blue_Click(object sender, EventArgs e)
        {
            p.Color = blue.BackColor;
            default1.BackColor = blue.BackColor;
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            sp = e.Location;
            if (e.Button == MouseButtons.Left);
            k = 1;

        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            k = 0;

        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (k == 1)
            {
                ep = e.Location;
                g = this.CreateGraphics();
                g.DrawLine(p, sp, ep);
            }

            sp = ep;

        }

        private void del1_Click(object sender, EventArgs e)
        {
            g.Clear(Color.White);

        }

        private void yellow_Click(object sender, EventArgs e)
        {
            p.Color = yellow.BackColor;
            default1.BackColor = yellow.BackColor;
        }

        private void purple_Click(object sender, EventArgs e)
        {
            p.Color = purple.BackColor;
            default1.BackColor = purple.BackColor;
        }

        private void brown_Click(object sender, EventArgs e)
        {
            p.Color = brown.BackColor;
            default1.BackColor = brown.BackColor;
        }

        private void black_Click(object sender, EventArgs e)
        {
            p.Color = black.BackColor;
            default1.BackColor = black.BackColor;
        }

        private void nud1_ValueChanged(object sender, EventArgs e)
        {





        }

        private void white_Click(object sender, EventArgs e)
        {
            p.Color = white.BackColor;
            default1.BackColor = white.BackColor;
        }
    }
}

我这样做了,现在我得到了这个错误:CS0077 as运算符必须与引用类型或可为null的类型一起使用(“int”是不可为null的值类型)从参数中删除as int。我相信这个值已经是一个整数了,我不知道为什么我会这么说。现在我有一个错误:参数2:无法从“十进制”转换为“浮点”,这是因为nud1。这个值是十进制的,Pen使用浮点表示宽度。编辑我的文章与参考资料和更新的代码链接。它真的工作!此外,您还提到添加变量,以便在事件发生更改时,我可以将其分配回我的笔值。有没有一种不用新变量的方法?谢谢你的宽度问题,我有!
p = new Pen(Color, (float)nud1.Value);