c#如何实现在窗体中绘制直线

按照书本上的这样写为什么没有结果呢?privatevoidForm1_Load(objectsender,EventArgse){Graphicsg=newGraphic... 按照书本上的这样写为什么没有结果呢?
private void Form1_Load(object sender, EventArgs e)
{
Graphics g = new Graphics();
g.DrawLine(Pens.Black,10,10,100,100);
}
书本上写的 protected override void Onpaint(PaintEventArgs e){
}是什么意思呢?每次绘制图形都要在这里面写吗?求大神指教
展开
 我来答
freeeeeewind
2014-10-10 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1347万
展开全部

就是重载窗体的OnPain方法,见下图

出现智能提示后,按【Tab】即可

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //重载后方法!
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawLine(Pens.Black, 10, 10, 100, 100);
        }
    }
}

重载OnPain方法后,每次窗体显示内容被更新时,就调用次方法来刷新窗体。

追问
谢谢~  不过这样的话怎么实现点击按钮后,窗体上绘直线呢?要把这个重载放到button的click事件中吗? 新手求教。不胜感谢
追答
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        //设置一个标志
        bool flag = false;
        public Form1()
        {
            InitializeComponent();
        }

        //重载后方法!
        protected override void OnPaint(PaintEventArgs e)
        {
            //标志为flase时,不画线
            if (flag ==false) return;
            Graphics g = e.Graphics;
            g.DrawLine(Pens.Black, 10, 10, 100, 100);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //设置标志为true,画线
            flag = true;
            this.Refresh();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //设置标志为false,将已经画的线删除
            flag = false;
            this.Refresh();
        }
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式