C#中Graphics的问题
在C#的Winform应用程序中,为什么不能在构造函数和Form_load中用Graphics绘图呢?而只能卸载Paint事件或者控件的点击事件中。我觉得原因是因为每次窗...
在C#的Winform应用程序中,为什么不能在构造函数和Form_load中用Graphics绘图呢?而只能卸载Paint事件或者控件的点击事件中。
我觉得原因是因为每次窗体加载完显示的时候会刷新,这样绘制的东西就没有了,那为什么构造函数的InitializeComponent( )中加载的控件能够显示,这些控件的底层还不是用GDI+绘制的,我想原因应该是这些控件的界面绘制部分的代码也在它们各自的Paint事件中。
请高手点评我的想法是否正确,谢谢!
还有,为什么我在窗体的构造函数或者Form_Load时间使用this.hide(),窗体
还是显示出来,而在Paint或者控件的点击事件中使用this.hide,窗体就不见了,而且再也不出现了,我想和上面的关于Graphics绘制部分的原理可能有点关系,但是我也绕不清楚,请高手指教! 展开
我觉得原因是因为每次窗体加载完显示的时候会刷新,这样绘制的东西就没有了,那为什么构造函数的InitializeComponent( )中加载的控件能够显示,这些控件的底层还不是用GDI+绘制的,我想原因应该是这些控件的界面绘制部分的代码也在它们各自的Paint事件中。
请高手点评我的想法是否正确,谢谢!
还有,为什么我在窗体的构造函数或者Form_Load时间使用this.hide(),窗体
还是显示出来,而在Paint或者控件的点击事件中使用this.hide,窗体就不见了,而且再也不出现了,我想和上面的关于Graphics绘制部分的原理可能有点关系,但是我也绕不清楚,请高手指教! 展开
4个回答
展开全部
第一个说对了.因为Load发生的时候窗体并未显示,等到窗体刷新时就没了.
加载的控件能显示,是因为控件不是图像,它们会在各自的Paint过程中绘制.(具有系统外观的控件是由系统负责绘制的)
在构造函数或Form_Load过程中this.hide会无效,是因为此时窗体并未显示出来,在这之后窗口随时会被重新激活(这中间逻辑蛮复杂的,我也没有研究太懂,主要涉及到SetVisibleCore,啥时候有空了仔细研究下).关于这个,可以考虑采用其它办法.用Google搜索一下"SetVisibleCore 启动时不显示"能找到些资料.但是这个和Graphics绘制没有关系.
加载的控件能显示,是因为控件不是图像,它们会在各自的Paint过程中绘制.(具有系统外观的控件是由系统负责绘制的)
在构造函数或Form_Load过程中this.hide会无效,是因为此时窗体并未显示出来,在这之后窗口随时会被重新激活(这中间逻辑蛮复杂的,我也没有研究太懂,主要涉及到SetVisibleCore,啥时候有空了仔细研究下).关于这个,可以考虑采用其它办法.用Google搜索一下"SetVisibleCore 启动时不显示"能找到些资料.但是这个和Graphics绘制没有关系.
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
展开全部
这个吧。我认为是Form_Load事件的触发时间的问题吧,应该是Form_Load事件先于其他事件触发,所以你在Form_Load中Hide()时候,窗体本就没显示出来,你在Form_Load中画图的时候,它确实画了。然后Paint的时候可能是覆盖了吧。
个人猜想,没环境,所以没验证过。楼主找资料查下告诉我。。
你可以看看Form的设计文件,那个Form1.Design.cs或者.vb什么的。找下看看。
唉。学艺不精,还边学边往,以前看过一个说明窗体中各个事件调用顺序的文章,看完就忘了。。这毛病啥时候能该。。。
个人猜想,没环境,所以没验证过。楼主找资料查下告诉我。。
你可以看看Form的设计文件,那个Form1.Design.cs或者.vb什么的。找下看看。
唉。学艺不精,还边学边往,以前看过一个说明窗体中各个事件调用顺序的文章,看完就忘了。。这毛病啥时候能该。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试CreateGraphics方法。。。
如
Button1.CreateGraphics();
如
Button1.CreateGraphics();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好像是被窗口上的控件盖住了,你打空间背景设透明看看还有没有线,我以前做过一个作业就是在Form_load上画了坐标,picturebox设透明就能看到窗体上画的坐标了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询