1、理解图片构成
上面是一个飞机的透明图片,每个图片都是有一个个像素点构成的,每个像素点都是一个颜色,在内存中占4个字节,由透明度、红、绿、蓝构成。如下图:
该飞机图片飞机图片长51像素,宽63像素。就是说图片是有51×63个像素构成,在内存中占有51×63×4字节大小。
2、不透明图片显示
比如说我们有一个白色背景的画布,要在上面把飞机图片显示出来。首先我们要知道在哪开始画,就是指飞机图片针对白色背景的画布的相对坐标位置,也就是飞机图片要显示的左上角坐标,然后从该坐标开始向右数51个像素,向下数63个像素,将该范围内的所有像素点都替换为飞机相对应的像素点,这样飞机就显示出来了。
如下图:
我们把黑方框里的像素替换成飞机图片的像素,图片就显示出来了。
3、透明图片显示
每个像素点都有一个透明度(0~255),0是完全透明,255是完全不透明,其他值是半透明。显示透明图片有2种方法:
1)简单:取一个折中的透明度,比如说100,透明度大于100的我们就认为是不透明的,白色背景的画布相应位置的像素就替换成飞机图片像素,小于100的就认为是透明的,不替换,还是原来画布的像素,这样的话这块位置的颜色给用户的感觉就是透明了。
2)复杂:我们需要得到白色背景画布像素点的红、绿、蓝,还有飞机图片对应位置像素点的透明度、红、绿、蓝这些值。根据图片的透明度,用一个公式将画布像素点的红绿蓝与图片像素红绿蓝进行换算,得到新的像素点值,再将该像素点替换画布上的像素点即可。