-
大小: 4.46MB文件類型: .rar金幣: 2下載: 0 次發布日期: 2023-09-18
- 語言: C/C++
- 標簽:
資源簡介
gdi+游戲框架這是一個用vc6.0寫的Win32游戲框架.當然,這算不上引擎.該源碼付帶了一個簡單的粒子系統,用來模擬雪花測試.因為用了png圖片繪制雪花,所以得到平均每秒也只有32幀.對于2D游戲來講夠了.如果用透明漸變的話繪圖很明顯變慢.可能這是GDI+一個不完美的地方.所以講只要不是特效,或一定要用到透明漸變不要用png圖片.BitBlt是DrawImage的一百四十倍!源代碼中用了雙緩沖,所以1024*764畫圖也不會出現閃爍!

代碼片段和文件信息
#include?“stdafx.h“
#include?“snow.h“
#include?“stdio.h“
//gdi+用到的兩個變量
????GdiplusStartupInput?m_gdiplusStartupInput;
????ULONG_PTR?m_pGdiToken;
Image?*image;
Image?*src;
//全局變量
HINSTANCE?hInst;
HBITMAP?map;
HDC hdcmdcbuffer;
HWND hWnd;
DWORD tPretNow;
int x=0y=0;
int?fps=0;
int?frame=0;
DWORD?tCheck=0;
snow?*snowsecen;
char?str[40];?
//ㄧΑ
ATOM MyRegisterClass(HINSTANCE?hInstance);
BOOL InitInstance(HINSTANCE?int);
LRESULT?CALLBACK WndProc(HWND?UINT?WPARAM?LPARAM);
void MyPaint(HDC?hdc);
//****祘Α**************************************
int?APIENTRY?WinMain(HINSTANCE?hInstance
?????????????????????HINSTANCE?hPrevInstance
?????????????????????LPSTR?????lpCmdLine
?????????????????????int???????nCmdShow)
{
MSG?msg;
MyRegisterClass(hInstance);
//初始化
if?(!InitInstance?(hInstance?nCmdShow))?
{
return?FALSE;
}
//消息循環
????while(?msg.message!=WM_QUIT?)
????{
????????if(?PeekMessage(?&msg?NULL?00?PM_REMOVE)?)
????????{
????????????TranslateMessage(?&msg?);
????????????DispatchMessage(?&msg?);
????????}
else
{
tNow?=?GetTickCount();
if(tNow-tPre?>=?15)
{
MyPaint(hdc);
if(GetAsyncKeyState(VK_UP)&0x8000f)
{
y?-=?10;
if(y?0)
y?=?0;
}
if(GetAsyncKeyState(VK_DOWN)&0x8000f)
{
y?+=?10;
if(y?>?660)
y?=?660;
}
if(GetAsyncKeyState(VK_LEFT)&0x8000f)
{
x?-=?10;
if(x?0)
x?=?0;
}
if(GetAsyncKeyState(VK_RIGHT)&0x8000f)
{
x?+=?10;
if(x?>?910)
x?=?910;
}
}
}
????}
return?msg.wParam;
}
//****注冊窗口類*************************
ATOM?MyRegisterClass(HINSTANCE?hInstance)
{
WNDCLASSEX?wcex;
wcex.cbSize?=?sizeof(WNDCLASSEX);?
wcex.style =?CS_HREDRAW?|?CS_VREDRAW;
wcex.lpfnWndProc =?(WNDPROC)WndProc;
wcex.cbClsExtra =?0;
wcex.cbWndExtra =?0;
wcex.hInstance =?hInstance;
wcex.hIcon =?NULL;
wcex.hCursor =?NULL;
wcex.hCursor =?LoadCursor(NULL?IDC_ARROW);
wcex.hbrBackground =?(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName =?NULL;
wcex.lpszClassName =?“canvas“;
wcex.hIconSm =?NULL;
return?RegisterClassEx(&wcex);
}
//****﹍ㄧΑ*************************************
//?初始化
BOOL?InitInstance(HINSTANCE?hInstance?int?nCmdShow)
{
HBITMAP?bmp;
hInst?=?hInstance;
hWnd?=?CreateWindow(“canvas“?“2D游戲框架透明漸變混合“??WS_OVERLAPPEDWINDOW
CW_USEDEFAULT?0?CW_USEDEFAULT?0?NULL?NULL?hInstance?NULL);
if?(!hWnd)
{
return?FALSE;
}
MoveWindow(hWnd001024768true);
ShowWindow(hWnd?nCmdShow);
UpdateWindow(hWnd);
hdc?=?GetDC(hWnd);
mdc?=?CreateCompatibleDC(hdc);
buffer=CreateCompatibleDC(hdc);
bmp=CreateCompatibleBitmap(hdc1024768);
//裝載gdi+
????GdiplusStartup(&m_pGdiToken&m_gdiplusStartupInputNULL);?
//
snowsecen=new?snow();
src=new?Image(L“p.png“);
????image=new?Image(L“f123.png“);
map?=?(HBITMAP)LoadImage(NULL“black.bmp“IMAGE_BITMAP1024768LR_LOADFR
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????120429??2007-01-30?20:12??GDI+?Game\f123.png
?????文件???????1404??2008-09-18?13:47??GDI+?Game\canvas.aps
?????文件????????535??2003-06-28?22:11??GDI+?Game\canvas.dsw
?????文件?????176216??2008-09-19?00:38??GDI+?Game\canvas.exe
?????文件????????326??2003-06-28?21:16??GDI+?Game\canvas.h
?????文件?????123904??2008-09-19?01:06??GDI+?Game\canvas.ncb
?????文件???????1242??2008-09-19?01:05??GDI+?Game\canvas.plg
?????文件???????1662??2003-06-28?21:53??GDI+?Game\canvas.rc
?????文件????????410??2003-06-28?21:53??GDI+?Game\resource.h
?????文件????????293??2003-06-28?21:16??GDI+?Game\StdAfx.cpp
?????文件???????1133??2008-09-18?13:10??GDI+?Game\StdAfx.h
????..A.SH.?????36864??2008-09-18?21:46??GDI+?Game\Thumbs.db
?????文件?????????32??2008-09-18?11:28??GDI+?Game\Debug\canvas.res
?????文件?????254976??2008-09-19?01:05??GDI+?Game\Debug\vc60.idb
?????文件?????471040??2008-09-19?01:05??GDI+?Game\Debug\vc60.pdb
?????文件?????176216??2008-09-19?01:05??GDI+?Game\Debug\canvas.exe
?????文件?????435200??2008-09-19?01:05??GDI+?Game\Debug\canvas.pdb
?????文件????1210932??2008-09-18?13:10??GDI+?Game\Debug\StdAfx.sbr
?????文件????6194636??2008-09-18?13:10??GDI+?Game\Debug\canvas.pch
?????文件?????146324??2008-09-18?13:10??GDI+?Game\Debug\StdAfx.obj
?????文件???????6842??2008-09-19?01:05??GDI+?Game\Debug\canvas.sbr
?????文件????2761728??2008-09-18?13:11??GDI+?Game\Debug\canvas.bsc
?????文件????????144??2008-09-18?18:04??GDI+?Game\Debug\snow.sbr
?????文件???????1797??2008-09-18?18:04??GDI+?Game\Debug\snow.obj
?????文件??????32279??2008-09-19?01:05??GDI+?Game\Debug\canvas.obj
?????文件?????228768??2008-09-19?01:05??GDI+?Game\Debug\canvas.ilk
?????目錄??????????0??2008-09-18?13:46??GDI+?Game\Debug
?????文件???????2973??2008-09-17?20:07??GDI+?Game\snow.png
?????文件?????????40??2008-09-18?18:04??GDI+?Game\snow.cpp
?????文件???????4417??2008-09-18?18:15??GDI+?Game\canvas.dsp
............此處省略9個文件信息
- 上一篇:linux電子詞典小項目
- 下一篇:用C++實現MapInfo 的mif文件讀取源碼
評論
共有 條評論