C#中,在窗口绘图的时候,添加了一个picturebox,将导入的图片覆盖整个窗口作为背景,然后在

C#中,在窗口绘图的时候,添加了一个picturebox,将导入的图片覆盖整个窗口作为背景,然后在背景的基础上绘制线段,为什么我用g.graphic=e.graphic;... C#中,在窗口绘图的时候,添加了一个picturebox,将导入的图片覆盖整个窗口作为背景,然后在背景的基础上绘制线段,为什么我用g.graphic=e.graphic;可以画出来,但是用 g.graphic=creatgraphic();就不行了,怎么解决啊? 展开
 我来答
HAL9000PLUS
2014-10-27 · TA获得超过1279个赞
知道小有建树答主
回答量:663
采纳率:0%
帮助的人:716万
展开全部
绘图方法当然要在给定的上下文上绘制,你自己创建的Graphics设备当然不行了。

这是“回调函数”的原理。就是说你的绘制方法是给系统调用的,而不是自己调用的。

你按系统要求的标准写一个绘图方法,当系统认为需要重绘一个窗口了(比如刚刚显示,或是被其他窗口遮到又露出了),这时就会调用你写的那个OnPaint方法,把屏幕里那个窗口绘制区与一个绘图设备(Graphics,如同画布)上下文关联起来,然后把这个Graphics做为参数给你(e.Graphics),说:请在这个图形设备上绘制吧!于是你的方法开始在这个画布上画。画好了系统把这个绘出来的内容显示在屏幕上。

如果你自己创建一个自己的Graphics设备,这个设备并不是系统给你的那个,当然不会被显示出来了。你当然可以自己创建一个绘图设备来绘制,但你不把你自己的这个Graphics复制到系统递给你的那个设备(e.graphics)上的话,当然是不会显示的。

怎么解决?用e.Graphics来绘图呗!

但我感觉你可能有别的问题。你为什么非要自己搞Graphics?
更多追问追答
追问
因为我还加了复选框,通过判断复选框的变化调用相应的函数,但是我把绘图函数加到复选框下面的函数里去,总有错误,函数放外面是没问题的。。直接上图吧。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式