例如,在WinForm桌面的窗体设置了背景图片,尝试从上方绘制时却未能产生预期效果, 就是从背景图片上面绘制却没有效果。
文章目录
- 示例
- 改进
下面是一个在窗体背景上绘制圆形边框的示例。
示例
修改前,代码如下
var gCtx = Graphics.FromImage(BackgroundImage);
gCtx.DrawEllipse(pen, selectRect);
从上面看,是绘制不出来,为什么呢
绘制不出来的原因,好像是,
绘制完就被下一帧覆盖了,因此看不到效果,
另外发现, 背景图是平铺的,
除了第一个图的区域, 其它区域都有绘制, 通过调大窗体就可以看到
只绘制一次就用此方式是没问题的
改进
修改后,代码如下
var gCtx = CreateGraphics();
gCtx.DrawEllipse(pen, selectRect);
从上面看,有绘制出来了,为什么呢
改进的方法适合重新绘制的场景, 例如画板的绘制