开发者社区> 橘子红了呐> 正文

如何在Windows Mobile下使用.NET Compact Framework画透明图片

简介:
+关注继续查看

Iphone之所以那么流行一部分归功于他的炫丽的界面,其实那些界面的实现主要由两大功能组成:画透明图片和画渐变效果。这次主要讲述windows mobile下画透明图片。

所谓透明图片其实就是把图片背景设置成透明,如果直接画出图片会显示一个规则正方形的图,其中图片包括不规则图形和该图像下的背景,所以如果只是想画出不规则图形,需要把背景去掉。下面为去掉背景的实现。

/// <summary>
///
Draws the image with transparency
/// </summary>
/// <param name="gx">
Destination graphics</param>
/// <param name="image">
The image to draw</param>
/// <param name="destRect">
Desctination rectangle</param>
public static void DrawImageTransparent(this Graphics gx, Image image, Rectangle destRect)
{
ImageAttributes imageAttr = new ImageAttributes();
Color transpColor = GetTransparentColor(image);
imageAttr.SetColorKey(transpColor, transpColor);
gx.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttr);
imageAttr.Dispose();
}
private static Color GetTransparentColor(Image image)
{
return ((Bitmap)image).GetPixel(image.Width - 1, image.Height - 1);
}

先调用Bitmap.GetPixel()函数取出图片的背景信息,然后设置ImageAttributes 的属性,在画图的时候把图片属性传递到Graphics.DrawImage()函数进行绘画。

效果图如下:

transparency1 

有些图片做的不好,有点锯齿。

 下面是没有去掉背景的图片,作为比较。



    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/08/13/Windows_Mobile_Compact_Framework_Transparent.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
kubernetes如何要使用用户名和密码登陆harbor以拉取docker镜像,应该如何操作?
还好,网上有相应的CASE处理。 http://www.jianshu.com/p/ffbfb44dc496 =========================== 先生成名为为regsecret的Secret【此处也可以定义namespace已限制使用范围】。
1845 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
10125 0
自建Kubernetes集群如何使用弹性容器实例ECI
虚拟节点(Virtual Node)实现了Kubernetes与弹性容器实例ECI的无缝连接,让Kubernetes集群轻松获得极大的弹性能力,而不必受限于集群的节点计算容量。您可以灵活动态的按需创建ECI Pod,免去集群容量规划的麻烦。本文主要介绍虚拟节点和ECI,通过ack-virtual-node组件如何部署虚拟节点及如何创建ECI Pod。
772 0
linux 内存文件系统使用 - tmpfs, ramfs, shmfs
linux 内存文件系统使用 - tmpfs, ramfs, shmfs
1032 0
如何使用Terraform管理容器服务Kubernetes集群之--Serverless集群
#### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。
1372 0
如何在 Kubernetes 环境中搭建 MySQL(四):使用 StorageClass 挂接 RBD
MySQL + Kubernetes 1. 简介 在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求,试想如果部署一个应用,需要申请十个 R...
1555 0
如何在 Kubernetes 环境中搭建 MySQL(三):使用 PVC 挂接 RBD
MySQL in Kubernetes MySQL 中的数据是关键信息,是有状态的,不可能随着 MySQL pod 的销毁而被销毁,所以数据必须要外接到一个可靠的存储系统中,目前已经有了 Ceph 系统,所以这里就只考虑如何将 Ceph 作为外部存储的情况,毕竟没有条件去尝试其他存储方案。
1827 0
3402
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载