WINCE系统Picturebox控件支持透明方法
来源:互联网 发布:脑供血不足 知乎 编辑:程序博客网 时间:2024/05/21 09:22
看到论坛里有这篇文章,特别有用,于是转了过来!
在WINCE中标准的PictureBox控件是不支持透明的,无论是否设置了Transparent属性。
使用如下方法可达到透明的效果。
1. 首先将PictureBox的Visible属性置为false,避免在透明效果未完成时显示出来。
2. 申请一个临时的Bitmap,大小与PictureBox相同。
3. 将PictureBox盖住的背景截图到Bitmap中。
4. 再将PictureBox的Image复制到Bitmap中,需要使用ImageAttributes对象指定透明色。
5. 将PictureBox的Image指向Bitmap。
6. 将PictureBox的Visible属性置为true。
此方法的缺点是需要先将PictureBox隐藏,等生成完图片再显示出来。这样就造成PictureBox与窗体不能同时显示,但将生成图片的方法放在窗体的Load事件中应可以解决这个问题。
第2个缺点是,此方法不支持真正的透明,而是将图片中的某个颜色当做透明色来处理,例如:将纯白作为透明,则图片中白色的部分将显示背景上的图片。
- C# code
- // WINCE PictureBox控件图片透明化 private void Transparent(PictureBox pic, PictureBox picBack) { // 生成一个与PictureBox一样大的缓冲区 Bitmap buffer = new Bitmap(pic.Width, pic.Height); // 创建图形对象,绘图区域为刚刚生成的缓冲区 Graphics g = Graphics.FromImage(buffer); // 背景上被PictureBox覆盖的区域区域。假定PictureBox覆盖在背景图之上 Rectangle scrRect = new Rectangle( pic.Left - picBack.Left, // 截图区域的左上角X坐标 pic.Top - picBack.Top, // 截图区域的左上角Y坐标 pic.Width, // 截图区域的宽度 pic.Height); // 截图区域的高度 // 将背景上被PictureBox覆盖的那块区域截图下来,保存在缓冲区中 g.DrawImage(picBack.Image, // 背景图 0, // 所截图片画在缓冲区中的左上角X坐标 0, // 所截图片画在缓冲区中的左上角Y坐标 scrRect, // 需要截图的区域 GraphicsUnit.Pixel); // 此参数表示本次调用传入的参数以像素为单位 // 指定被当做透明色的颜色值,这里使用纯白。 // MSDN中SetColorKey的低值和高值可不相同,但这里必须相同,否则报错。原因未知。 ImageAttributes imageAttr = new ImageAttributes(); imageAttr.SetColorKey(Color.FromArgb(255, 255, 255), Color.FromArgb(255, 255, 255)); // 将PictureBox的Image拷贝到Bitmap中,指定的颜色当做透明色 g.DrawImage(pic.Image, // 将PictureBox的图片绘制在缓冲区中 new Rectangle(0, 0, pic.Width, pic.Height), // 绘制区域,将PictureBox的图片按比例缩放绘制在这个区域内 0, // 截图区域的左边坐标,PictureBox必须覆盖为背景图之上 0, // 截图区域的上边坐标 pic.Width, // 截图区域的宽度 pic.Height, // 截图区域的高度 GraphicsUnit.Pixel, // 此参数表示本次调用传入的参数以像素为单位 imageAttr); // 透明色 pic.Image = buffer; }
- WINCE系统Picturebox控件支持透明方法
- C# WinForm 透明控件 PictureBox透明
- lable picturebox等控件背景颜色透明
- wince系统下的picturebox 显示图片
- vb 让PictureBox控件透明 可加载gif 图片
- PictureBox图像控件保存透明色BMP、JPG图片
- DotNet中PictureBox控件实现重叠透明效果
- picturebox控件
- 容器透明(如PictureBox)
- picturebox透明背景处理
- 使picturebox透明
- 透明PictureBox示例
- mfc控件透明方法
- C#winForm中设置在PictureBox上的Label控件透明
- 如何在PictureBox上透明的显示文字1(利用控件技术)
- C# picturebox 透明 图层
- label在pictureBox中透明
- 设置picturebox 背景为透明
- 2012欧洲杯,期待板鸭与德国的终极对决
- 程序员的通病-是时候锻炼了
- jsp的session介绍
- javascript模版引擎-tmpl的bug修复与性能优化
- Linux添加新硬盘
- WINCE系统Picturebox控件支持透明方法
- javascript 设置cookie
- 嵌入式操作系统内核原理和开发(最快、最优、最差内存分配算法)
- 坑爹的escan网页防护,导致不能上网,解决方法是停掉网页防护和钓鱼过滤器
- coredll函数大全
- [Android实例] http请求No peer certificate的解决方法
- linux进程 各种 状态浅析
- 解决tomcat6.0.33 配置SSL时报“No Certificate file specified or invalid file format”异常
- Android --- ImageTool , BitmapTools 工具类