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

📄 gwt.h

📁 MP4源代码
💻 H
字号:

//Defines the entry point for compiling the win 32 console application.
//VC++ Header file.By 追风逐月 2010-12-14.
//GraphicsWhenTurn.Headerfile

/*windows窗口创建该复制的部分

HWND winHwnd;
HDC  winHdc;

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int InitWindowStyle(WNDCLASS *wclass,HINSTANCE hInstance)
{
	wclass->style = CS_HREDRAW|CS_VREDRAW;
	wclass->lpfnWndProc=WndProc;
	wclass->cbClsExtra=0;
	wclass->cbWndExtra=0;
	wclass->hInstance=hInstance;
	wclass->hIcon=LoadIcon(NULL,IDI_APPLICATION);
	wclass->hCursor=LoadCursor(NULL,IDC_ARROW);
	wclass->hbrBackground=CreateSolidBrush(0xffffff);
	wclass->lpszMenuName=NULL;
	wclass->lpszClassName=TEXT("MainClass");
	return RegisterClass(wclass);
}

void InitWindow(HINSTANCE hInstance,int nCmdShow)
{
	WNDCLASS wndClass;
	if(!InitWindowStyle(&wndClass,hInstance))
	{
		MessageBox(NULL,"窗口注册错误!","error提示",MB_OK);
		PostQuitMessage(0);
	}
	winHwnd=CreateWindow(TEXT("MainClass"),
						 TEXT("By_Pop"),//窗口名称
						 WS_OVERLAPPEDWINDOW,
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,
						 CW_USEDEFAULT,
						 NULL,
						 NULL,
						 hInstance,
						 NULL);
	winHdc=GetDC(winHwnd);
	ShowWindow(winHwnd,nCmdShow);
	UpdateWindow(winHwnd);
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	InitWindow(hInstance,nCmdShow);
	MSG msg;
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
	case WM_CREATE:
		break;
	case WM_PAINT:
		{
			PAINTSTRUCT ps;
			HBRUSH hOldBrush;
			BeginPaint(hwnd,&ps);

		}
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	}
	return DefWindowProc(hwnd,message,wParam,lParam);
}


*/
#ifndef _GWT_H_
#define _GWT_H_

#include "pex.h"//Has been included windows.h math.h tchar.h

#define GW_NOFRAME	-1
#define GW_NORMAL	0
#define GW_FULL		1
#define GW_ELLIPIS	2
#define GW_CIRCLE	3

//窗口系统函数
void GViewInit(int mode=0,int w=640,int h=480,int posx=CW_USEDEFAULT,int posy=CW_USEDEFAULT);
void GViewDestroy();
int LcdWid();
int LcdHgt();
//模拟鼠标单击函数
void SimulateMouseLButtonDownUp(HWND hwnd,int mousex,int mousey);
void SimulateKBHit(HWND hwnd,WPARAM wParam,LPARAM lParam);


//普通数据处理函数
void ShowIntegerVariable(int x,int y,int integer,PIMAGE img=NULL);
void ShowIntegerWithString(int x,int y,LPCTSTR helpstr,int integer,PIMAGE img=NULL);
void ShowIntegerWithString(int x,int y,int integer1,LPCTSTR helpstr,int integer2,PIMAGE img=NULL);
int Msg(LPCTSTR msg,int mode=-1,UINT uType=MB_OK);//-1debug界面 1提示界面 其他自定义界面

//图象数据处理函数
int GetMidPos(int destL,int srcL);
//判断两张图片是否碰撞 是返回true 否则false
BOOL BeCrashed(int src1x,int src1y,int src1w,int src1h,int src2x,int src2y,int src2w,int src2h);
BOOL WillCrashedinRow(int src1x,int src1w,int src2x,int src2w);
BOOL WillCrashedinLine(int src1y,int src1h,int src2y,int src2h);
void GRectangle(int x,int y,int w,int h,PIMAGE img=NULL);


//图象处理函数
//将图像转换为lvl层的色阶(默认为灰色)图像
void SetImageToGraydation(PIMAGE src=NULL,int lvl=4,PIMAGE dest=NULL,int sx=0,int sy=0,int sw=0,int sh=0);
//仅过滤src2的关键色后粘贴显示在屏幕上,src1为背景。不修改src1,src2
void GImageShowTransparent(int picx,int picy,PIMAGE src1,PIMAGE src2,int putsrc2tox,int putsrc2toy,COLORREF crTransparent=0XFFFFFF,int src2x=0,int src2y=0,int src2w=0,int src2h=0);
//融合动画显示在屏幕上。不修改src1,src2
void GImageShowAlphaTurned(PIMAGE src1,int src1x,int src1y,PIMAGE src2,int src2tosrc1x,int src2tosrc1y,unsigned char alpha,int src2x,int src2y,int src2w,int src2h);
//自动将图片适应屏幕大小,注意,img必须足够屏幕大小
void GImageSelfAdaptWindow(PIMAGE img);
//自动将图片适应屏幕大小,并返回。返回值赋给自己也可以
IMAGE GImageAdaptWindow(PIMAGE img);
//窗口截图放入img中
void GImagePrivateShot(PIMAGE img);
//颜色滤镜函数:整体更改外表颜色
void GBgColorFilter(PIMAGE dest,int putsrctodestx,int putsrctodesty,PIMAGE src,COLORREF keycolor,int srcx=0,int srcy=0,int srcw=0,int srch=0);
//旋转图像
void RotateImage(float tarc,IMAGE *pimgdest,int destx,int desty,IMAGE *pimgsrc,int srcx,int srcy,int srcw,int srch);

int LcdWid(){return GetSystemMetrics(SM_CXSCREEN);}
int LcdHgt(){return GetSystemMetrics(SM_CYSCREEN);}

void GViewInit(int mode,int w,int h,int posx,int posy)
{
	switch(mode)
	{
	case 1:
		{
			setinitmode(1,0,0);
			initgraph(-1,-1);
		}
		break;
	case 0:
		{
			setinitmode(0,posx,posy);
			initgraph(w,h);
		}
		break;
	case -1:
		{
			setinitmode(1,posx,posy);
			initgraph(w,h);
		}
		break;
	case 2:
		{
			setinitmode(0,posx,posy);
			initgraph(w,h);
			int cx = GetSystemMetrics(SM_CXFIXEDFRAME);
			int cy = GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYCAPTION);
			SetWindowRgn(GetHWnd(), CreateEllipticRgn(cx,cy,cx+w,cy+h), true);
		}
		break;
	case 3:
		{
			setinitmode(0,posx,posy);
			initgraph(w,h);
			int cx = GetSystemMetrics(SM_CXFIXEDFRAME);
			int cy = GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYCAPTION);
			SetWindowRgn(GetHWnd(), CreateEllipticRgn(cx,cy,cx+2*w,cy+2*w), true);
		}
		break;
	default:
		{
			MessageBox(GetHWnd(),"Sorry,the graph cannot be initted with an unreceptable mode","error",MB_OK);
		}
		break;
	}
	SetWindowText(GetHWnd(),"PoweredByWhx QQ 997205816");
}

void GViewDestroy()
{
	closegraph();
}

void RotateImage(float tarc,IMAGE *pimgdest,int destx,int desty,IMAGE *pimgsrc,int srcx,int srcy,int srcw,int srch) 
{
	float centerx=(float)(srcw+srcx+1)/2; 
	float centery=(float)(srch+srcy+1)/2; 
	for(int nowy=srcy;nowy<=srch;nowy++)
	{
		for(int nowx=srcx;nowx<=srcw;nowx++)
		{
			putpixel(
				((nowx-centerx)*cos(tarc)-(nowy-centery)*sin(tarc)+centerx),
				((nowx-centerx)*sin(tarc)+(nowy-centery)*cos(tarc)+centery),
				getpixel(nowx,nowy,pimgsrc),
				pimgdest
				); 
		}
	}
}
void ShowIntegerVariable(int x,int y,int integer,PIMAGE img)
{
	if(integer>2147483647||integer<-2147483647)
	{
		MessageBox(GetHWnd(),"ShowIntegerVariable( .. , .. , 传入参数过大或过小)","error!-GWT DEBUG",MB_OK);
	}
	else
	{
		char cbuf[10];
		wsprintf(cbuf,"%d",integer);
		outtextxy(x,y,cbuf,img);
	}
}
int GetMidPos(int destL,int srcL)
{
	if(destL>srcL)
		return (destL-srcL)/2;
	else
		return 0;
}
int Msg(LPCTSTR msg,int mode,UINT uType)
{
	if(mode==-1)		return MessageBox(GetHWnd(),msg,"error!-GWT DEBUG",MB_OK|MB_ICONWARNING);
	else if(mode==1)	return MessageBox(GetHWnd(),msg,"提示: -追风逐月",uType);
	else				return MessageBox(GetHWnd(),msg,"提示:",uType);
}
void GImageShowTransparent(int picx,int picy,PIMAGE src1,PIMAGE src2,int putsrc2tox,int putsrc2toy,COLORREF crTransparent,int src2x,int src2y,int src2w,int src2h)
{
	IMAGE imgbuf;
	imgbuf.getimage(0,0,getwidth(),getheight());
	putimage(&imgbuf,0,0,src1);
	putimage_transparent(&imgbuf,src2,putsrc2tox,putsrc2toy,crTransparent,src2x,src2y,src2w,src2h);
	putimage(picx,picy,&imgbuf);
}
void GImageSelfAdaptWindow(PIMAGE img)
{
	if(getwidth(img)>getwidth()&&getheight(img)>getheight())
		putimage(img,0,0,getwidth(),getheight(),img,0,0,getwidth(img),getheight(img));
	else
		Msg("GImageSelfAdaptWindow(输入的img比窗口小,无法自适应,请使用GImageAdaptWindow)",-1);
}

IMAGE GImageAdaptWindow(PIMAGE img)
{
	IMAGE imgbuf;
	imgbuf.getimage(0,0,getwidth(),getheight());
	putimage(&imgbuf,0,0,getwidth(),getheight(),img,0,0,getwidth(img),getheight(img));
	return imgbuf;
}

inline COLORREF alphacol(COLORREF a, COLORREF b, COLORREF alpha)
{
    COLORREF crb = (a & 0xFF00FF) * (0xFF-alpha) + (b & 0xFF00FF) * (alpha);
    COLORREF cg = (a & 0xFF00) * (0xFF-alpha) + (b & 0xFF00) * (alpha);
    return ((crb & 0xFF00FF00) | (cg & 0xFF0000)) >> 8;
}
/*
void AlphaPutImage(int w, int h, IMAGE *pimg, IMAGE *pimg1, IMAGE *pimg2, COLORREF alpha)
{
    int len = w * h;
    PDWORD p = pimg->getbuffer(), p1 = pimg1->getbuffer(), p2 = pimg2->getbuffer();
    for (PDWORD ped=p+len; p<ped; )
    {
        COLORREF a = *p1++;
        COLORREF b = *p2++;
        *p++ = alphacol(a, b, alpha);
    }
}*/
void GImageShowAlphaTurned(PIMAGE src1,int src1x,int src1y,PIMAGE src2,int src2tosrc1x,int src2tosrc1y,unsigned char alpha,int src2x,int src2y,int src2w,int src2h)
{
	IMAGE buf1;
	buf1.getimage(0,0,getwidth(src1),getheight(src1));
	putimage(&buf1,0,0,src1);
	putimage_alphablend(&buf1,src2,src2tosrc1x,src2tosrc1y,alpha,src2x,src2y,src2w,src2h);	
	putimage(src1x,src1y,&buf1);
}

void GImagePrivateShot(PIMAGE img)
{
	int w=getwidth(),h=getheight();
	for(int y=0;y<h;y++)for(int x=0;x<w;x++)
		putpixel(x,y,getpixel(x,y),img);
}

void GBgColorFilter(PIMAGE dest,int putsrctodestx,int putsrctodesty,PIMAGE src,COLORREF keycolor,int srcx,int srcy,int srcw,int srch)
{
	float h,s,v,hbuf;
	if(!srcw)srcw=getwidth(src);
	if(!srch)srch=getheight(src);
	RGBtoHSV(keycolor,&h,&s,&v);
	for(int destxbuf=putsrctodestx,srcxbuf=srcx;srcy++<=srch;putsrctodesty++,srcx=srcxbuf)
		for(putsrctodestx=destxbuf;srcx++<=srcw;RGBtoHSV(getpixel(srcx,srcy,src),&hbuf,&s,&v))
			putpixel(putsrctodestx++,putsrctodesty,HSVtoRGB(h,s,v),dest);
}

void SetImageToGraydation(PIMAGE src,int lvl,PIMAGE dest,int sx,int sy,int sw,int sh)
{
	lvl--;
	float h,s,v,vshouldbe,vlvl;
	if(!sw)
	{
		if(src)sw=src->getwidth();
		else	sw=getwidth();
	}
	if(!sh)
	{
		if(src)sh=src->getheight();
		else	sh=getheight();
	}
	for(;sy<sh;sy++)for(int x=sx;x<sw;x++)
	{
		RGBtoHSV(getpixel(x,sy,src),&h,&s,&v);
		vlvl=vshouldbe=0;
		while(vshouldbe<=1)
		{
			vlvl+=1.00000/(lvl+1);
			if(v<=vlvl)
			{
				v=vshouldbe;
				break;
			}
			vshouldbe+=1.00000/lvl;
		}
		putpixel(x,sy,HSVtoRGB(10,0,v),dest);
	}
}

BOOL WillCrashedinLine(int src1y,int src1h,int src2y,int src2h)
{
	if ((src1y+src1h>src2y)&&(src1y<src2y+src2h))
		return true;
	return false;
}
BOOL WillCrashedinRow(int src1x,int src1w,int src2x,int src2w)
{
	if ((src1x+src1w>src2x)&&(src1x<src2x+src2w))
		return true;
	return false;
}
BOOL BeCrashed(int src1x,int src1y,int src1w,int src1h,int src2x,int src2y,int src2w,int src2h)
{
	if ((src1x+src1w>src2x)&&(src1x<src2x+src2w))
             if ((src1y+src1h>src2y)&&(src1y<src2y+src2h))
                 return true;
	return false;
}

void ShowIntegerWithString(int x,int y,LPCTSTR helpstr,int integer,PIMAGE img)
{
	outtextxy(x,y,helpstr,img);
	ShowIntegerVariable(x+textwidth(helpstr),y,integer,img);
}

void ShowIntegerWithString(int x,int y,int integer1,LPCTSTR helpstr,int integer2,PIMAGE img)
{
	char str[256];
	wsprintf(str,"%d%s%d",integer1,helpstr,integer2);
	outtextxy(x,y,str,img);
}

void GRectangle(int x,int y,int w,int h,PIMAGE img)
{rectangle(x,y,x+w,y+h,img);}

//模拟鼠标单击函数
void SimulateMouseLButtonDownUp(HWND hwnd,int mousex,int mousey)
{
	PostMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKELONG(mousex,mousey));
	Sleep(25);
	PostMessage(hwnd,WM_LBUTTONUP,MK_LBUTTON,MAKELONG(mousex,mousey));
	Sleep(25);
}

void SimulateKBHit(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
	PostMessage(hwnd,WM_KEYDOWN,wParam,lParam);
	Sleep(25);
	PostMessage(hwnd,WM_KEYUP,wParam,lParam);
	Sleep(25);
}


#endif

⌨️ 快捷键说明

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