На страницу группы практики...
#include <stdio.h>
#include <math.h>
#include "vg4anim.h"
static HFONT hFnt;
static HPEN hPen;
static VOID Init( vg4ANIM *Ani )
{
hFnt = CreateFont(111, 0, 50, 0, FW_BOLD,
TRUE, FALSE, FALSE, RUSSIAN_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, VARIABLE_PITCH | FF_ROMAN,
"Times");
hPen = CreatePen(PS_SOLID, 8, RGB(0, 0, 255));
}
static VOID Close( vg4ANIM *Ani )
{
DeleteObject(hFnt);
}
static VOID Response( vg4ANIM *Ani )
{
if (Ani->Keys[VK_SPACE])
VG4_SetPause(TRUE);
if (Ani->Keys['A'])
VG4_SetPause(FALSE);
if (Ani->Keys[VK_ESCAPE])
VG4_DoExit();
}
static VOID Render( vg4ANIM *Ani )
{
INT R = 300, x, y;
static CHAR Buf[100];
Rectangle(Ani->hDC, 10, 10, 100, 100);
SelectObject(Ani->hDC, hFnt);
SetTextColor(Ani->hDC, RGB(255, 0, 0));
SetBkMode(Ani->hDC, TRANSPARENT);
TextOut(Ani->hDC, 0, 0, Buf, sprintf(Buf, "FPS: %.3f", Ani->FPS));
SelectObject(Ani->hDC, hPen);
MoveToEx(Ani->hDC,
Ani->W / 2 + 25 * sin(5 * Ani->Time),
Ani->H / 2 + 25 * sin(2 * 5 * Ani->Time),
NULL);
LineTo(Ani->hDC,
Ani->W / 2 + R * sin(0.15 * Ani->Time),
Ani->H / 2 + R * cos(0.15 * Ani->Time));
MoveToEx(Ani->hDC,
Ani->W / 2,
Ani->H / 2,
NULL);
LineTo(Ani->hDC,
Ani->MX,
Ani->MY);
SelectObject(Ani->hDC, GetStockObject(NULL_PEN));
SetDCBrushColor(Ani->hDC, RGB(55, 155, 255));
x = Ani->W / 2 + Ani->W / 2.4 * sin(2 * Ani->Time);
y = Ani->H - 10 - fabs(300 * sin(5 * Ani->Time));
Ellipse(Ani->hDC, x - 10, y - 10, x + 11, y + 11);
}
VOID SetMyAnim( VOID )
{
VG4_SetCallbacks(Init, Close, Response, Render);
}