⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 foto.cpp

📁 不知道是一个什么游戏
💻 CPP
字号:
// Foto.cpp: implementation of the Foto class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Foto.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Foto::Foto()
{
	prendido_DC=NULL;
	apagado_DC=NULL;
	mask_DC=NULL;
	mask_invert_DC=NULL;
}

Foto::~Foto()
{
	if( prendido_DC != NULL )
		DeleteDC( prendido_DC );
	prendido.DeleteObject();
	if( apagado_DC != NULL )
		DeleteDC( apagado_DC );
	apagado.DeleteObject();
	if( mask_DC != NULL )
		DeleteDC( mask_DC );
	mask.DeleteObject();
	if( mask_invert_DC != NULL )
		DeleteDC( mask_invert_DC );
	mask_invert.DeleteObject();
}

bool Foto::Inicializar(HWND vent_h,UINT recurso_prend,UINT recurso_apag, UINT recurso_mascara,UINT recurso_mascara_inverted)
{
	BITMAP info_bmp;

	ventana_handle=vent_h;
	prendido_DC=::CreateCompatibleDC( NULL );
	if( prendido_DC == NULL )
		return false;
	if( !prendido.LoadBitmap( recurso_prend ) )
		return false;
	::SelectObject( prendido_DC,HBITMAP( prendido ) );

	if( prendido.GetBitmap( &info_bmp ) == 0 )
		return false;
	ancho=info_bmp.bmWidth;
	alto=info_bmp.bmHeight;
	
	apagado_DC=::CreateCompatibleDC( NULL );
	if( apagado_DC == NULL )
		return false;
	if( !apagado.LoadBitmap( recurso_apag ) )
		return false;
	::SelectObject( apagado_DC,HBITMAP( apagado ) );
	mask_DC=::CreateCompatibleDC( NULL );
	if( mask_DC == NULL )
		return false;
	if( !mask.LoadBitmap( recurso_mascara ) )
		return false;
	::SelectObject( mask_DC,HBITMAP( mask ) );
	mask_invert_DC=::CreateCompatibleDC( NULL );
	if( mask_invert_DC == NULL )
		return false;
	if( !mask_invert.LoadBitmap( recurso_mascara_inverted ) )
		return false;
	::SelectObject( mask_invert_DC,HBITMAP( mask_invert ) );
	ConversorBmp2Rgn conversor;
	region_h=0;
	region_h=conversor.Convertir( recurso_mascara );
	return true;
}

bool Foto::Inicializar( HWND vent_h,UINT recurso_foto )
{
	BITMAP info_bmp;

	ventana_handle=vent_h;
	prendido_DC=::CreateCompatibleDC( NULL );
	if( prendido_DC == NULL )
		return false;
	if( !prendido.LoadBitmap( recurso_foto ) )
		return false;
	if( prendido.GetBitmap( &info_bmp ) == 0 )
		return false;
	ancho=info_bmp.bmWidth;
	alto=info_bmp.bmHeight;
	::SelectObject( prendido_DC,HBITMAP( prendido ) );
	return true;
}

bool Foto::Dibujar(int x, int y)
{
	if( !::BitBlt( ::GetWindowDC( ventana_handle ),x,y,ancho,alto,prendido_DC,x,y,SRCCOPY) )
		return false;
	return true;
}

bool Foto::DibujarEnmascarada(int x, int y)
{
	/*if( !::BitBlt( prendido_DC,0,0,ancho,alto,mask_DC,x,y,SRCAND ) )
		return false;
	if( !::BitBlt( ::GetWindowDC(ventana_handle),x,y,ancho,alto,mask_invert_DC,0,0,SRCAND ) )
		return false;*/
	CRgn region;
	region.CreateEllipticRgn(0,0,10,10);
	HDC eldc=::GetWindowDC( ventana_handle );
	int a=::ExtSelectClipRgn( eldc,region_h,RGN_COPY);
	if( a==ERROR )
		AfxMessageBox("error");
	if( !::BitBlt( eldc,x,y,ancho,alto,prendido_DC,0,0,SRCCOPY ) )
		return false;
	return true;
}




bool Foto::RedibujarFondoEnmascarado(int x,int y)
{
	if( !::BitBlt( apagado_DC,0,0,ancho,alto,mask_DC,x,y,SRCAND ) )
		return false;
	if( !::BitBlt( ::GetWindowDC(ventana_handle),x,y,ancho,alto,mask_invert_DC,0,0,SRCAND ) )
		return false;
	if( !::BitBlt( ::GetWindowDC(ventana_handle),x,y,ancho,alto, apagado_DC ,0,0,SRCPAINT ) )
		return false;
	return true;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -