猫史档案馆


“坚持100秒”的一个依赖文件

用户:小萝卜cXsQ小萝卜cXsQ查看:0 回复:1 评论:0 创建时间:2022-07-03T09:38:50


#pragma once
#include <graphics.h>  
#include <math.h>
#define	 PI 3.14159

// �ڵ�ǰ�豸�ϻ��ƴ�͸��ͨ����pngͼƬ
// img_x	����λ�õ�x����
// img_y	����λ�õ�y����
// pSrcImg	Ҫ���Ƶ�IMAGE����ָ��
void putimagePng(int img_x, int img_y, IMAGE* pSrcImg) 
{
	DWORD * dst = GetImageBuffer();
	DWORD * src = GetImageBuffer(pSrcImg);
	int src_width  = pSrcImg->getwidth();
	int src_height = pSrcImg->getheight();
	int dst_width  = getwidth();
	int dst_height = getheight();

	int im_width,im_height;
	if (img_x + src_width > dst_width)
		im_width = dst_width - img_x;
	else
		im_width = src_width;
	if (img_y + src_height > dst_height)
		im_height = dst_height - img_y;
	else
		im_height = src_height;
	
	if (img_x < 0) 
	{ 
		src = src - img_x;				
		im_width = im_width + img_x;	
		img_x = 0; 
	}
	if (img_y < 0) 
	{ 
		src = src - src_width * img_y;
		im_height = im_height + img_y;
		img_y = 0; 
	}
	dst = dst + dst_width * img_y + img_x;

	for (int i = 0; i < im_height; i++)
	{
		for (int j = 0; j < im_width; j++)
		{			
			int src_r = ((src[j] & 0xff0000) >> 16);
			int src_g = ((src[j] & 0xff00) >> 8);
			int src_b =   src[j] & 0xff;
			int src_a = ((src[j] & 0xff000000) >> 24);
			int dst_r = ((dst[j] & 0xff0000) >> 16);
			int dst_g = ((dst[j] & 0xff00) >> 8);
			int dst_b =   dst[j] & 0xff;
			dst[j] = ((src_r + dst_r * (255 - src_a) / 255) << 16)
				| ((src_g + dst_g * (255 - src_a) / 255) << 8)
				|  (src_b + dst_b * (255 - src_a) / 255);
		}
		dst = dst + dst_width;
		src = src + src_width;
	}
}

 


回复

上一页1 页 / 共 1下一页
小萝卜cXsQ小萝卜cXsQ

代码 shequ.codemao.cn/community/468485 素材  shequ.codemao.cn/community/468486

点赞0


评论