解释一下`this.Width` 和 `this.ClientRectangle.Width` 和 `this.ClientSize.Width`之间的区别

哎呀,这不是为难我吗?不过在大脑出现了短暂性的空白加迷茫后还是默默的想起那一丝丝的记忆,决定还是在bibi几句为好,这会bibi些啥我就不敢保障了,哈哈。。。
第一个this.width只得是这个控件的宽度,而并非不是this.clientrectangle.width所表示的控件工作区的宽度。因为不知道控件的宽度和你所要运行工作区的宽度间的距离,所以改为工作区的宽度后不会出现 工作物在弹来弹去的过程中超出了一点点的边界。。
而这个this。clientsize.width,是为了获取或设置这个工作区高度和长度。额,他的属性是表示控件工作区的维数。好像大概就知道这点意思吧。。。。额,不过暂时还不知后两者的区别。。。。。
不过倒是学会了如何表示坐标的书写格式,限定控件运行的范围,以及用pen制作出一个矩形了。收获还是不错滴。。

namespace WindowsFormsApplication1.number5
{
    public partial class Form1 : Form
    {
        int ox,oy;
        int a = 20;

        public Form1()
        {
            ox = 1;
            oy = 1;
            InitializeComponent();
            label1.Text = "你好";
            button1.Text = "我不好";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color.Black);
            g.DrawRectangle(p, 20, 20, this.ClientSize.Width -40,150 );
            Rectangle rect = new Rectangle(20, 20, this.ClientSize.Width - 40, 150);
            g.DrawRectangle(p,rect);


            p.Dispose();
            g.Dispose();
            if (
            timer1.Enabled)
                timer1.Stop();
            else
                timer1.Start();
            label1.Text = "那我走了";
            button1.Text = "走一下试试";
            label2.Text ="(" + "20" + "  " + "20)";
            label3.Text = "(" + (this.ClientSize.Width - 40).ToString() + "  " + "20)";
            label4.Text =  "("+(this.ClientSize.Width - 40).ToString() + "  " + "170)";
            label5.Text = "(20" + "  " + "170)";



        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Random b = new Random();

            //up
            if (oy == -1 &&
                label1.Location.Y < a)
                oy = 1;

            //right
            if ((label1.Location.X + label1.Width > (this.ClientSize.Width - 20)) && ox == 1)
                ox = -1;

            //down
            if ((label1.Location.Y + this.label1.Height > 170) && oy == 1)
                oy = -1;

            if (label1.Location.X < a && ox == -1)
                ox = 1;



            label1.Location = new Point(label1.Location.X + ox * b.Next(10), label1.Location.Y + oy * b
                .Next(10));

        }

        }
    }

虽然最后那个有点小瑕疵,,,,,不过没关系啦,哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值