- #ifdef
WIN32 - #ifdef
BUILD_DLL - #define
DLLINTERFACE __declspec(dllexport) - #else
- #define
DLLINTERFACE __declspec(dllimport) - #endif
- #else
- #define
DLLINTERFACE - #endif
#ifndef DLLINTERFACE
#define DLLINTERFACE
#endif
在本教程中,我们对他提供的函数进行了封装,类名为SDLTransform,代码如下
- #ifndef
SDLTRANSFORM_H_ - #define
SDLTRANSFORM_H_ - #include
"SDLSurface.h" - class
SDLTransform - {
-
friend class SDL; - private:
-
SDLTransform(); - public:
-
virtual ~SDLTransform(); - public:
-
-
SDLSurfacePtr Rotate90Degrees(SDLSurfacePtr src, -
int numClockwiseTurns); -
-
-
SDLSurfacePtr Zoom( SDLSurfacePtr src, double zoomx, -
double zoomy, bool smooth = 0); - };
-
- #endif
- #include
"SDLTransform.h" - #include
"SDLException.h" - #include
"SDLCore.h" - #include
"GFX/SDL_rotozoom.h" - SDLTransform::SDLTransform()
- {
- //
TODO Auto-generated constructor stub - }
-
- SDLTransform::~SDLTransform()
- {
- //
TODO Auto-generated destructor stub - }
-
- SDLSurfacePtr
SDLTransform::Rotate90Degrees(SDLSurfacePtr src, - int
numClockwiseTurns) - {
-
SDL_Surface * surface = rotateSurface90Degrees(src->value(), -
numClockwiseTurns); -
if(surface ==NULL) -
{ -
throw SDLException(std::string("旋转图片失败:") + SDL_GetError()); -
} -
return SDLSurfacePtr(new SDLSurface(surface)); - }
-
- SDLSurfacePtr
SDLTransform::Zoom( SDLSurfacePtr src, -
double zoomx, double zoomy, bool smooth) - {
-
SDL_Surface * surface = zoomSurface(src->value(), zoomx, zoomy, smooth); -
if(surface ==NULL) -
{ -
throw SDLException(std::string("SPG_Scale缩放图片失败:") + SDL_GetError()); -
} -
return SDLSurfacePtr(new SDLSurface(surface)); - }
- #include
"Lesson03.h" - Lesson03::Lesson03()
- {
-
// TODO Auto-generated constructor stub - }
-
- Lesson03::~Lesson03()
- {
-
// TODO Auto-generated destructor stub - }
-
- void
Lesson03::onRender() - {
-
//设置背景为白色 -
SDL_Rect rect; -
rect.x = 0; -
rect.y = 0; -
rect.w = screen->value()->w; -
rect.h = screen->value()->h; -
Uint32 color = SDL::video()->MapRGB(screen->value()->format, 255, 255, 255); -
SDL::video()->FillRect(screen, &rect, color); -
//在屏幕中央绘制正常的文字 -
rect.x = screen->value()->w/2 - message->value()->w/2; -
rect.y = screen->value()->h/2 - message->value()->h/2; -
SDL::video()->BlitSurface(message, NULL, screen, &rect); -
-
//在(50,50)的地方绘制旋转90度的文字 -
rect.x = 50; -
rect.y = 50; -
SDL::video()->BlitSurface(message1, NULL, screen, &rect); -
-
//在(100,100)的地方绘制Y轴方向缩小一半的文字 -
rect.x = 100; -
rect.y = 100; -
SDL::video()->BlitSurface(message2, NULL, screen, &rect); - }
- void
Lesson03::onInit() - {
-
//获取字体 -
SDLFontPtr font = SDL::fontManager()->OpenFont( - "E:\\code_picture\\wqy-zenhei.ttc",
20); -
font->SetFontStyle(TTF_STYLE_UNDERLINE | TTF_STYLE_ITALIC); -
-
//渲染文字 -
message = font->RenderUNICODEBlended("大家好(Hello, Everybody)", -
SDL::assistant()->makeColor(255, 0, 0)); -
-
//旋转90度 -
message1 = SDL::transform()->Rotate90Degrees(message, 1); -
-
//X轴大小不变,Y轴缩小一半 -
message2 = SDL::transform()->Zoom(message, 1, 0.5); - }
本工程源码:http://dl.javaeye.com/topics/download/f9ec0895-7357-3a1b-88aa-3c4070a04b32