C# Graphics在Form上绘制图形的疑问?

我在一个Form的构造函数中添加如下代码:publicForm1(){InitializeComponent();this.Show();Graphicsgp=this.... 我在一个Form的构造函数中添加如下代码:
public Form1()
{
InitializeComponent();
this.Show();
Graphics gp = this.CreateGraphics();
gp.DrawLine(new Pen(Color.Blue,2), 5, 5, 50, 100);
gp.FillEllipse(Brushes.Coral, 1, 1, 20, 20);
gp.FillRectangle(Brushes.Yellow, 5, 25, 20, 20);
Pen pen = new Pen(Color.Red, 1);
gp.DrawRectangle(pen, 10, 50, 30, 30);
}
运行程序后,发现不起作用,图形没有绘制成功。
但是,我重新建了一个Form后,添加相同的代码,成功了。请问是什么原因?
展开
 我来答
百度网友6eed2f8
2011-10-10 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3823万
展开全部
添加Form_Paint事件
然后把你的代码拷贝到Form_Paint事件就行了
不能卸载构造函数里的,因为此时窗体还没有显示,没办法画图的
可以参考我百度空间里的俄罗斯方块游戏的开发,里面有详细的解释
更多追问追答
追问
首先,非常感谢。
但是,我在构造函数总先添加了 this.Show();,这样窗体就出现了。关键是我有的程序行,有的不行。这让我很郁闷。
追答
this.Show();执行完以后窗体并不能保证马上就显示出来的,就像你点击下载一样,不是一瞬间就完成的,需要个过程的,有时候机器卡的时候打开程序你有没有发现程序启动很慢,呵呵
你如果不信可以调试一下啊,在this.Show();后面输出当前时间然后在Form_Shown事件里也打印一下时间,你会发现不一样的,你可以看看Form_Shown事件是在什么时候触发的,你至少应该把画图的代码放到Form_Shown中,但是Form_Shown只能执行一次,Form_Paint是一直执行的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式