518抽奖软件源码之:ImageStone显示处理透明PNG图片-创新互联

518抽奖软件源码之:ImageStone显示处理透明PNG图片

在开发“518抽奖软件”的时候,图片抽奖模式的时候,会遇到PNG透明图片。 需要对PNG透明图片进行显示、放大缩小、保存等处理。如何在缩小并保存后还保持透明,如何显示透明图片,请参看下面源码。

创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元虞城做网站,已为上家服务,为虞城各地企业和个人服务,联系电话:18982081108

显示透明PNG图片

	if (((FCObjImage*)img)->Load(file, NULL))
	{
		if (bAlpha) 
			((FCObjImage*)img)->ApplyEffect(FCEffectPremultipleAlpha()); //显示透明PNG需要加这行代码
	}
	
	void Timg::draw (HDC hDc, RECT rc)
	{
		if (m_w <= 0 || m_h <= 0) return;
		if (rc.left >= rc.right || rc.top >= rc.bottom) return;
		if (m_w == rc.right - rc.left && m_h == rc.bottom - rc.top)
			((FCObjImage*)img)->Draw(hDc, rc.left, rc.top);
		else
			((FCObjImage*)img)->Draw(hDc, rc);
	}	

缩小透明PNG图片并保存

//最关键的是如果要缩小并保存图片,图片加载的时候,不要执行 ApplyEffect(FCEffectPremultipleAlpha()) !!
//下面是一般的缩放保存代码
void Timg::stretch (int w, int h)
{
	if (m_w <= 0 || m_h <= 0) return;
	((FCObjImage*)img)->Stretch_Smooth(w, h);
	m_w = w;
	m_h = h;
}

BOOL Timg::save (const WCHAR* file, int quality)
{
	return ((FCObjImage*)img)->Save(file, quality);
}

检查图片是否是透明的

BOOL Timg::isTransparent()
{
	if (!isLoad()) return FALSE;
	if (((FCObjImage*)img)->ColorBits() != 32) return FALSE;

	int w = ((FCObjImage*)img)->Width();
	int h = ((FCObjImage*)img)->Height();

	int step_y = h * 0.05;
	if (step_y < 1) 
		step_y = 1;
	int step_x = w * 0.05;
	if (step_x < 1) 
		step_x = 1;

	for (int y = 0; y < h; y += step_y)
	{
		BYTE* pCurr = ((FCObjImage*)img)->GetBits(y);
		for (int x = 0; x < w; x += step_x)
		{
			if (255 != ((RGBQUAD*)pCurr)->rgbReserved)
				return TRUE;
			pCurr += (step_x * 4);
		}
	}

	return FALSE;
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:518抽奖软件源码之:ImageStone显示处理透明PNG图片-创新互联
网站地址:http://hbruida.cn/article/hchjs.html