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){
}是什么意思呢?每次绘制图形都要在这里面写吗?求大神指教 展开
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){
}是什么意思呢?每次绘制图形都要在这里面写吗?求大神指教 展开
1个回答
展开全部
就是重载窗体的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();
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询