两个BMP图像叠加 两个BMP图像叠加,怎么设置透明度灰度值等使得两个图象看的都比较清晰?任何图象格式的都可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有这样的算法满足你的要求吗?一般 对应象素点,对应RGB风量,v = (v1+v2) / 2 ,v1 v2 的权重就可以调,勉强算你的透明度。 直接RGB百分比加如R = R1 * 20% + R2 * 80% 以下是从一个源码中copy下来的:... girl = (HBITMAP)LoadImage(NULL,"girl.bmp",IMAGE_BITMAP,298,329,LR_LOADFROMFILE); GetObject(girl,sizeof(BITMAP),&bm2); px2 = new unsigned char [bm2.bmHeight * bm2.bmWidthBytes]; GetBitmapBits(girl,bm2.bmHeight * bm2.bmWidthBytes,px2); int xend,yend; int x,y,i; //癹伴ノ跑计 int rgb_b; int PxBytes = bm1.bmBitsPixel / 8 ; xend = xstart + 298; yend = ystart + 329; //矪瞶璉春瓜钩肅︹ for(y=ystart;y<yend;y++) { for(x=xstart;x<xend;x++) { rgb_b = y * bm1.bmWidthBytes + x * PxBytes ; px1[rgb_b] = px1[rgb_b] * 0.7; px1[rgb_b+1] = px1[rgb_b+1] * 0.7; px1[rgb_b+2] = px1[rgb_b+2] * 0.7; } } //矪瞶玡春瓜钩肅︹ for(y=0;y<(bm2.bmHeight); y++) { for(x=0;x<bm2.bmWidth; x++) { rgb_b = y * bm2.bmWidthBytes + x * PxBytes ; i = (ystart+y) * bm1.bmWidthBytes + (xstart+x) * PxBytes; px2[rgb_b] = px2[rgb_b] *0.3 + px1[i]; px2[rgb_b+1] = px2[rgb_b+1] *0.3 + px1[i+1]; px2[rgb_b+2] = px2[rgb_b+2] *0.3 + px1[i+2]; } } SetBitmapBits(girl,bm2.bmHeight*bm2.bmWidthBytes,px2);...看上去和2楼说得方法一样,乘以百分比.效果不错.2幅图都能看清楚. 设定2个透明度参数:C1,C2C1+C2=1按照(R,G,B)=C1(R1,G1,B1)+C2(R2,G2,B2)计算合成的象素。 How to set dialog as on-top like as PPLive 关于开发数据库程序的讨论(欢迎发言) 我的指针错在哪里啊?? 请教一个滑动窗口协议 终于下到免费的水晶报表中文9。2。0。448版了~!!~ 关于服务器管理端编程! 关于VC 读取配置所有 Section 值的问题 这里有没有女程序员?我想成立个女程序员联盟 opengl根据串口绘图代码 为啥我安装linux的虚拟机的时候出现这个 求助!ListCtrl问题,在线等回复!!! 使用odbc类如何解决时间小于1970.1.1 8:0:0
如R = R1 * 20% + R2 * 80%
girl = (HBITMAP)LoadImage(NULL,"girl.bmp",IMAGE_BITMAP,298,329,LR_LOADFROMFILE);
GetObject(girl,sizeof(BITMAP),&bm2);
px2 = new unsigned char [bm2.bmHeight * bm2.bmWidthBytes];
GetBitmapBits(girl,bm2.bmHeight * bm2.bmWidthBytes,px2); int xend,yend;
int x,y,i; //癹伴ノ跑计
int rgb_b;
int PxBytes = bm1.bmBitsPixel / 8 ; xend = xstart + 298;
yend = ystart + 329; //矪瞶璉春瓜钩肅︹
for(y=ystart;y<yend;y++)
{
for(x=xstart;x<xend;x++)
{
rgb_b = y * bm1.bmWidthBytes + x * PxBytes ; px1[rgb_b] = px1[rgb_b] * 0.7;
px1[rgb_b+1] = px1[rgb_b+1] * 0.7;
px1[rgb_b+2] = px1[rgb_b+2] * 0.7;
}
} //矪瞶玡春瓜钩肅︹
for(y=0;y<(bm2.bmHeight); y++)
{
for(x=0;x<bm2.bmWidth; x++)
{
rgb_b = y * bm2.bmWidthBytes + x * PxBytes ;
i = (ystart+y) * bm1.bmWidthBytes + (xstart+x) * PxBytes; px2[rgb_b] = px2[rgb_b] *0.3 + px1[i];
px2[rgb_b+1] = px2[rgb_b+1] *0.3 + px1[i+1];
px2[rgb_b+2] = px2[rgb_b+2] *0.3 + px1[i+2];
}
} SetBitmapBits(girl,bm2.bmHeight*bm2.bmWidthBytes,px2);
...
看上去和2楼说得方法一样,乘以百分比.效果不错.2幅图都能看清楚.
C1+C2=1
按照
(R,G,B)=C1(R1,G1,B1)+C2(R2,G2,B2)计算合成的象素。