亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? animeffect.cpp

?? 我的FTP一般保存在 CuteFTP 里面
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
Modified by 徐景周 2000.12
Modify by dsfy	2002.9
Modify by Lorndragon 2003.7 -- MFC to SDK
功能:對(duì)話框動(dòng)畫效果顯示
*/
//////////////////////////////////////////////////////////////////////

#define _ANIM_INTERNAL_

//#include "stdafx.h"
#include "AnimEffect.h"
#include <math.h>

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

#define FIXED_SHIFT 16
#define FIXED int

typedef struct tag_MATRIXF {
	FIXED fM11;
	FIXED fM12;
	int	  iM13;
	FIXED fM21;
	FIXED fM22;
	int   iM23;
	int   iM31;
	int   iM32;
	int   iM33;
} MATRIXF;

const FIXED fixed1= 1 << FIXED_SHIFT;
const MATRIXF matrix1 = { fixed1, 0, 0, 0, fixed1, 0, 0, 0, 1 };
const POINT point0 = { 0, 0 };

int		fixedMul(int iMultiplicand, FIXED fMultiplier);
FIXED	fixedDiv(int iNumerator, int iDenominator);
POINT	operator*( const POINT &point, const MATRIXF &matrix);
MATRIXF	operator*( const MATRIXF &matrix1, const MATRIXF &matrix2);
MATRIXF	mix( const MATRIXF &matrix1, const MATRIXF &matrix2, FIXED fMix);
POINT	mix( const POINT &point1, const POINT &point2, FIXED fMix);

MATRIXF scaleMatrix( FIXED scaleX, FIXED scaleY, POINT ptOrg = point0 );
MATRIXF rotateMatrix( FIXED angle, POINT ptOrg = point0 );
MATRIXF offsetMatrix( int offsetX, int offsetY );

BOOL	efSpinFrame( AnimData *pAnimData );
BOOL	efVortexFrames( AnimData *pAnimData );
BOOL	efScatterGatherFrames( AnimData *pAnimData );
BOOL	efSpikeFrames( AnimData *pAnimData );
BOOL	efFireworxFrames( AnimData *pAnimData );



inline POINT operator+(POINT &point1, POINT &point2)
{
	POINT ptResult;
	ptResult.x = point1.x + point2.x;
	ptResult.y = point1.y + point2.y;
	return ptResult;
}

inline POINT operator-(POINT &point1, POINT &point2)
{
	POINT ptResult;
	ptResult.x = point1.x - point2.x;
	ptResult.y = point1.y - point2.y;
	return ptResult;
}

inline MATRIXF& operator *=(MATRIXF &matrix1, const MATRIXF &matrix2)
{
	return matrix1 = matrix1*matrix2;
}


void drawBox( HDC hDC, POINT &ptCenter, POINT &ptRelRightTop );
void drawPoly( HDC hDC, POINT *pPts, DWORD dwPoints );

//畫動(dòng)態(tài)變化的方框線
void  AnimEffect::DrawWireRects(LPRECT lprcFrom, LPRECT lprcTo, UINT nMilliSecSpeed)
{
    const int nNumSteps = 10;

	GdiFlush();
    Sleep(50);  // Let the desktop window sort itself out

	// if hwnd is null - "you have the CON".
	HDC hDC = GetDC(NULL);

	// Pen size, urmmm not too thick
    HPEN hPen = CreatePen(PS_SOLID, 2, RGB(12,240,44));

	int nMode = SetROP2(hDC, R2_NOT);
	HPEN hOldPen = (HPEN) SelectObject(hDC, hPen);

	for (int i = 0; i < nNumSteps; i++)
	{
        double dFraction = (double) i / (double) nNumSteps;

        RECT transition;
        transition.left   = lprcFrom->left + (int)((lprcTo->left - lprcFrom->left) * dFraction);
        transition.right  = lprcFrom->right + (int)((lprcTo->right - lprcFrom->right) * dFraction);
        transition.top    = lprcFrom->top + (int)((lprcTo->top - lprcFrom->top) * dFraction);
        transition.bottom = lprcFrom->bottom + (int)((lprcTo->bottom - lprcFrom->bottom) * dFraction);

		POINT pt[5];
		pt[0].x = transition.left;
		pt[0].y = transition.top;
		pt[1].x = transition.right;
		pt[1].y = transition.top;
		pt[2].x = transition.right;
		pt[2].y = transition.bottom;
		pt[3].x = transition.left;
		pt[3].y = transition.bottom;
		pt[4].x = transition.left;
		pt[4].y = transition.top;

		// We use Polyline because we can determine our own pen size
		// Draw Sides
		Polyline(hDC,pt,5);

		GdiFlush();

		Sleep(50);
//		Sleep(1000);

		// UnDraw Sides
		Polyline(hDC,pt,5);

		GdiFlush();
	}

	SetROP2(hDC, nMode);
	SelectObject(hDC, hOldPen);

	ReleaseDC(NULL,hDC);
}

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

AnimEffect::AnimEffect()
{
	m_hDC = GetDC(NULL);
	m_hPen = CreatePen( PS_SOLID, 1, RGB(12,240,44) );

	Defaults();
}

AnimEffect::~AnimEffect()
{
	DeleteObject( m_hPen );
	ReleaseDC( NULL, m_hDC );
}

void AnimEffect::Defaults()
{
	m_rcScreen.left = 0; m_rcScreen.top = 0;
	m_rcScreen.right = GetSystemMetrics(SM_CXFULLSCREEN);
	m_rcScreen.bottom = GetSystemMetrics(SM_CYFULLSCREEN);
	m_iAfterimages = 1;//6;
	m_iTotalSteps = 20;//50;
	m_iDelay = 1;//5;
	Effect( Random );
}

void AnimEffect::Setup(int iSteps, int iAfterimages, int iDelay)
{
	if (iSteps > 255) iSteps = 255;
	else if (iSteps < 1) iSteps = 1;
	m_iTotalSteps = iSteps;

	if (iAfterimages > 32) iAfterimages = 32;
	else if (iAfterimages < 0) iAfterimages = 0;
	m_iAfterimages = iAfterimages;

	if (iDelay > 100) iDelay = 100;
	else if (iDelay < 0) iDelay = 0;
}

void AnimEffect::Effect( EffectType effect )
{
	switch ( effect ) {
	case Random:
		break;
	case Spin:
		m_iParameter = 360;
		break;
	case Vortex:
		m_iParameter = 180;
		break;
	case ScatterGather:
		m_iParameter = 4;
		break;
	case Spike:
		m_iParameter = 180;
		break;
	case Fireworks:
		m_iParameter = 360;
		break;
	}
	m_Effect = effect;
}

void AnimEffect::ChooseFunc()
{
	bool bRandom = false;

	if (m_Effect == Random) {
		bRandom = true;
		Effect((EffectType)(rand() % 5));
	}

	switch (m_Effect) {
	case Spin:
		m_Func = efSpinFrame;
		break;
	case Vortex:
		m_Func = efVortexFrames;
		break;
	case ScatterGather:
		m_Func = efScatterGatherFrames;
		break;
	case Spike:
		m_Func = efSpikeFrames;
		break;
	case Fireworks:
		m_Func = efFireworxFrames;
		break;
	default:
		m_Func = 0;
	}

	if (bRandom) {
		m_Effect = Random;
	}
}


void AnimEffect::Open( const RECT &rcWnd )
{
	HPEN oldpen;
	int	 oldrop2;
	AnimData ad;

	oldpen = (HPEN)SelectObject(m_hDC, m_hPen);
	oldrop2= SetROP2(m_hDC, R2_NOT);

	ChooseFunc();

	ad.bOpen = TRUE;

	ad.hDC = m_hDC;

	ad.iAfterimages = m_iAfterimages;

	ad.iTotalSteps = m_iTotalSteps;

	ad.rcWnd = rcWnd;

	ad.ptCenter.x = rcWnd.left + (rcWnd.right - rcWnd.left ) / 2 ; // - rcWnd.top ;
	ad.ptCenter.y = rcWnd.top + (rcWnd.bottom - rcWnd.top) /2  ;

	ad.ptRelRightTop.x = rcWnd.right - ad.ptCenter.x;
	ad.ptRelRightTop.y = rcWnd.top - ad.ptCenter.y;

	ad.iParameter = m_iParameter;


	Animate(ad);
	Sleep(1);
	SetROP2(m_hDC, oldrop2);
	SelectObject(m_hDC, oldpen);
}

void AnimEffect::Close( const RECT &rcWnd )
{
	HPEN oldpen;
	int	 oldrop2;
	AnimData ad;

	oldpen = (HPEN)SelectObject(m_hDC, m_hPen);
	oldrop2= SetROP2(m_hDC, R2_NOT);

	ChooseFunc();
	ad.bOpen = FALSE;
	ad.hDC = m_hDC;
	ad.iAfterimages = m_iAfterimages;
	ad.iTotalSteps = m_iTotalSteps;
	ad.rcWnd = rcWnd;
	ad.ptCenter.x =  rcWnd.left + (rcWnd.right - rcWnd.left ) / 2; 
	ad.ptCenter.y = rcWnd.top + (rcWnd.bottom - rcWnd.top) /2;

	ad.ptRelRightTop.x = rcWnd.right - ad.ptCenter.x;
	ad.ptRelRightTop.y = rcWnd.top - ad.ptCenter.y;
	ad.iParameter = m_iParameter;

	Animate(ad);
	
	SetROP2(m_hDC, oldrop2);
	SelectObject(m_hDC, oldpen);
}

void AnimEffect::Animate(AnimData &animData)
{
	animData.animType = AnimInit;
	m_Func(&animData);

	if (animData.bOpen) {
		for(int frame=0;frame < animData.iTotalSteps+animData.iAfterimages;frame++) {
			// draw 
			if (frame < animData.iTotalSteps) {
				animData.animType = AnimDraw;
				animData.iStep = frame;
				m_Func( &animData );
				GdiFlush();
			}
			Sleep(20);
			// erase
			if (frame >= animData.iAfterimages){
				animData.animType = AnimErase;
				animData.iStep = frame - animData.iAfterimages;
				m_Func( &animData );
				GdiFlush();
			}
		}
	} else {
		for(int frame=animData.iTotalSteps+animData.iAfterimages-1;frame >= 0 ;frame--) {
			// draw 
			if (frame >= animData.iAfterimages) {
				animData.animType = AnimDraw;
				animData.iStep = frame - animData.iAfterimages;
				m_Func( &animData );
				GdiFlush();
			}
			Sleep(20);
			// erase
			if (frame < animData.iTotalSteps) {
				animData.animType = AnimErase;
				animData.iStep = frame;
				m_Func( &animData );
				GdiFlush();
			}
		}
	}

	animData.animType = AnimTerm;
	m_Func(&animData);
}
//////////////////////////////////////////////////////////////////////
// Supp. functions
//////////////////////////////////////////////////////////////////////

int		fixedMul(int iMultiplicand, FIXED fMultiplier)
{
	return MulDiv(iMultiplicand, fMultiplier, 65536);
}

FIXED	fixedDiv(int iNumerator, int iDenominator)
{
	if ( iNumerator == 0 || iDenominator == 0) return 0;

	return MulDiv(65536,iNumerator,iDenominator);
}

POINT	operator*( const POINT &point, const MATRIXF &matrix)
{
	POINT ptResult;
	ptResult.x = fixedMul(point.x, matrix.fM11) + fixedMul(point.y,matrix.fM21) + matrix.iM31;
	ptResult.y = fixedMul(point.x, matrix.fM12) + fixedMul(point.y,matrix.fM22) + matrix.iM32;
	return ptResult;
}

MATRIXF	operator*( const MATRIXF &m1, const MATRIXF &m2)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人午夜片在线观看高清观看| 欧美一级高清片| 国产成人亚洲综合a∨婷婷 | 亚洲综合色丁香婷婷六月图片| 国产精品狼人久久影院观看方式| 26uuu国产日韩综合| 欧美大肚乱孕交hd孕妇| 91精品国产一区二区三区香蕉| 欧美日韩精品一区二区三区蜜桃| 欧美中文字幕久久| 欧美日韩国产美女| 欧美精品久久一区二区三区| 欧美久久久久久久久久| 欧美一区二区三级| 精品欧美一区二区三区精品久久 | 亚洲男人天堂一区| 夜夜亚洲天天久久| 亚洲成在人线在线播放| 蜜桃视频免费观看一区| 麻豆91在线看| 国产精品系列在线播放| 成人免费av网站| 色狠狠综合天天综合综合| 欧美亚洲综合久久| 91精品国产高清一区二区三区| 日韩一卡二卡三卡四卡| 26uuu欧美| 中文字幕永久在线不卡| 亚洲在线免费播放| 免费在线看成人av| 国产成人亚洲综合a∨婷婷 | 久久久久综合网| 国产精品久久久久久久蜜臀| 亚洲女人的天堂| 日本网站在线观看一区二区三区| 精品在线你懂的| av毛片久久久久**hd| 欧美日韩一区二区三区免费看 | 日韩二区在线观看| 国产一区二区三区美女| 日本韩国一区二区三区| 日韩一级二级三级| 国产精品久久久久一区二区三区| 一区二区三区在线免费| 久久99精品久久只有精品| 97se亚洲国产综合自在线不卡| 欧美日韩精品高清| 国产欧美一区二区在线观看| 亚洲一区二区三区免费视频| 国内久久婷婷综合| 欧美系列日韩一区| 久久一区二区三区国产精品| 亚洲激情网站免费观看| 久久99精品视频| 欧美中文字幕一区二区三区 | 一区二区国产盗摄色噜噜| 毛片av一区二区| 91香蕉国产在线观看软件| 日韩欧美电影一二三| 亚洲人成网站精品片在线观看| 日av在线不卡| 色综合咪咪久久| www激情久久| 丝袜美腿高跟呻吟高潮一区| 不卡视频在线看| 久久亚洲精品小早川怜子| 性做久久久久久免费观看| 国产91在线看| 精品国产91洋老外米糕| 一区二区三区日韩精品| 成人自拍视频在线观看| 日韩欧美一区中文| 亚洲线精品一区二区三区| 豆国产96在线|亚洲| 精品国产91乱码一区二区三区| 亚洲精品成a人| av一区二区久久| 国产午夜久久久久| 免费成人av资源网| 欧美日韩免费电影| 一区二区三区不卡视频| 97精品国产露脸对白| 欧美国产综合一区二区| 精品一区二区三区在线观看| 欧美日韩国产片| 性做久久久久久免费观看欧美| 日韩视频在线你懂得| 亚洲日本青草视频在线怡红院 | 日本丰满少妇一区二区三区| 欧美精品一区二区三区蜜臀 | 欧美精品色综合| 亚洲一区免费观看| 91黄色激情网站| 亚洲激情校园春色| 色av一区二区| 亚洲欧美视频在线观看视频| 成人免费不卡视频| 欧美—级在线免费片| 国产精品一级黄| 久久免费看少妇高潮| 国产精品一二三在| 久久影院视频免费| 国产aⅴ精品一区二区三区色成熟| 欧美精品一区二区久久久 | 日韩一区二区三区在线视频| 无码av中文一区二区三区桃花岛| 欧美中文字幕一区二区三区| 亚洲国产精品嫩草影院| 欧美三级视频在线| 调教+趴+乳夹+国产+精品| 欧美日韩精品高清| 蜜臀av一级做a爰片久久| 4hu四虎永久在线影院成人| 免费成人你懂的| 欧美精品一区二区三区四区 | 久久精品理论片| 精品电影一区二区三区| 国产一区二区三区免费观看| 国产欧美日韩精品一区| 不卡av在线免费观看| 亚洲日本中文字幕区| 在线国产亚洲欧美| 石原莉奈在线亚洲三区| 欧美成人高清电影在线| 国产一区二区三区视频在线播放| 国产亚洲欧美日韩日本| proumb性欧美在线观看| 亚洲精品视频在线| 欧美一区二区三区精品| 国产精品一线二线三线| 亚洲欧洲性图库| 欧美三级视频在线| 极品少妇一区二区三区精品视频| 国产视频一区二区三区在线观看| 国产成人在线观看| 亚洲午夜私人影院| 欧美成人三级电影在线| 风流少妇一区二区| 一区二区三区精品在线观看| 欧美一区二区三区免费大片| 国产成人啪免费观看软件| 亚洲免费观看高清完整版在线| 欧美日本一道本在线视频| 极品少妇xxxx偷拍精品少妇| **网站欧美大片在线观看| 欧美视频一区二区在线观看| 国产一区二区三区免费播放| 一区二区三区四区在线播放| 日韩欧美一级在线播放| 成人福利在线看| 日韩精品成人一区二区在线| 中文字幕第一区二区| 欧美日韩一区二区三区高清| 国产精品综合网| 亚洲高清免费在线| 亚洲国产精品黑人久久久| 欧美精品视频www在线观看| 丁香桃色午夜亚洲一区二区三区| 亚洲gay无套男同| 国产精品欧美久久久久无广告| 欧美欧美欧美欧美首页| 成人av影院在线| 美女www一区二区| 亚洲黄色尤物视频| 国产婷婷精品av在线| 欧美高清激情brazzers| 本田岬高潮一区二区三区| 蜜桃久久av一区| 亚洲一区二区三区四区在线 | 欧美aaaaaa午夜精品| 自拍视频在线观看一区二区| 91精品在线一区二区| 99久久久精品免费观看国产蜜| 蜜臀精品久久久久久蜜臀| 亚洲欧美日韩电影| 国产欧美精品一区二区色综合 | 欧美三级中文字幕| 成人不卡免费av| 久久99精品久久久久久动态图| 亚洲国产综合91精品麻豆| 综合久久久久久| 亚洲国产精品精华液ab| 日韩欧美色综合| 正在播放亚洲一区| 欧美性videosxxxxx| 99精品欧美一区二区三区小说| 国产一区二区三区综合| 免费不卡在线观看| 午夜精品视频在线观看| 亚洲免费在线播放| 中文字幕日韩欧美一区二区三区| 国产亚洲人成网站| 精品国产91洋老外米糕| 日韩女优电影在线观看| 欧美精品成人一区二区三区四区| 色欧美日韩亚洲| 91丨九色丨黑人外教| 成人av先锋影音| 成人性生交大片免费看视频在线| 国产一区二区三区四|