代码改变世界

【吉光片羽】奇怪的Bug-细节的问题

2015-07-08 09:21 stoneniqiu 阅读(...) 评论(...) 编辑 收藏

    这几天用Winform开发了一个小界面,遇到几个奇怪的问题,记录一下。

    1.背景图片漏光。

    

    当时很是奇怪,以为是图片的问题,让美工重新发,改成jpg也都存在。很是奇怪,原图这个地方肉眼看是不透明的,而且这个漏光还是对称的,在图片的右边也有一个同样的漏光区域。最后重建工程,这个现象消失了,再比对代码,是这一句:

this.TransparencyKey = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));

 去掉或者换成White就好了。之前在调样式的时候设置过这个属性,开始不懂,以为是设置窗体透明的,真正的用法是表示要在窗体上透明显示的颜色。而图片下方的区域有的颜色刚好被透明就出现了上面奇怪纹理的漏光现象。

MSDN:https://msdn.microsoft.com/zh-cn/system.windows.forms.form.transparencykey

2.图片自适应。

测试人电脑上显示结果都正常,除了PM的电脑显示是这样个样子

当时心中就想,这是什么鬼啊。过去发现,PM的桌面图标都比较大,他电脑里面的设置是这样的  控制面板--外观个性化--显示

 

改成较小就正常了,但不能要求客户这样吧。图片不自适应了,回去修改了一句:开始选的center.

   this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;

添加背景图片之后,美工的图片大小匹配也没有注意到这个问题。还是要平铺的好。

3.选中黑框。

虽然说是将border设置成0,颜色透明,但在按Tab切换的时候,还是出现了选中的黑框。

焦点状态就是有个印记,折中的办法:和背景颜色相近的Border颜色,不留心还不好发现。

button1.FlatAppearance.BorderColor

最后,换成PictureBox 没有了这个问题。

 

小结:对于改bug这件事情,只要写程序,基本上天天都会经历,而得出的经验是:凡是bug,必有原因。有时候看似诡异的bug,可能原因很简单。有时候一个人思维太僵化,几个人讨论一下,就会发现问题在哪儿。漏光的那个问题,我嘀咕了几天,也找不到什么资料,最后和同事一起解决了,发现只是属性设置的问题。