PDA开发之控件背景不透明的解决办法

来源:互联网 发布:mac视频格式转换软件 编辑:程序博客网 时间:2024/05/16 05:58

    在PDA应用开发时会遇到一个问题:在窗体上加上一个背景图片,用label控件写字的时候会出现控件背景不透明的情况,导致最后显示窗体的时候会出现字体像嵌在一个控件上,相当难看。

产生这种问题的原因是在PDA上用来开发的.net compact framework把控件透明这项给精简去了,也就是说没有这项功能了。这可真挠头了。想了一下觉得有三种解决办法:1、自己写一个控件实现背景透明效果;2、下载一个第三方有背景透明效果的控件;3、直接在窗体控件上绘字。

第一种办法试过,完全没效果。其实我还存有一点幻想,想象可以通过写一个控件来实现这种效果。反复实验以后发现这种控件的透明还真是彻底,直接穿透窗体把PDA的背景给显示出来了。真是过犹不及。

第二种方法google了半天倒是有,但是好像国内没有提供这种控件的,反而是国外有但是要收费。收费的当然不予考虑了。也许有人说了,去opennetcf上面肯定找的到。对不起,我也试过,那些控件载入图片还可以,要实现背景透明那是一个也没有。

没办法只能直接在窗体上绘图了,因为绘字的话对于窗体上的XY坐标那是没什么用的,完全靠实践来判断字体的坐标,因此在上面具体位置写字也是相当麻烦。不过效果还好,只能这样了。

那最后来介绍一下这最后一种方法:我用的开发工具是VS 2005.net c#开发。

在窗体设计器中添加绘图事件:

this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form_Paint);

在事件方法中添加背景图片及在图片上要绘的字:

private void Form_Paint(object sender, PaintEventArgs e)

{

Bitmap image = new Bitmap(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + "//Images//background.jpg");//当前工作目录下的你的Images文件夹下的background.jpg文件

        e.Graphics.DrawImage(image, 0, 0);//载入背景图

        //绘字:基本上是以(1010)为一个字的大小

        SolidBrush white = new SolidBrush(Color.White);//设置字体颜色

        Font f = new Font("Tahoma", 9, FontStyle.Regular);//设置字体类型

    e.Graphics.DrawString("mobile", f, white, 23, 59);//绘字mobile        //23,59)是坐标

}

原创粉丝点击