[c]代码库
#include <windows.h>
#include <math.h>
#define PI 3.14159265
LRESULT CALLBACK WindowProcedure ( HWND, UINT, WPARAM, LPARAM );
void OnPaint ( HDC );
void DrawLine ( HDC, int, int, int, int );
void DrawFlower ( HDC, int, int, COLORREF );
void DrawTie ( HDC, int, int, COLORREF );
int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil )
{
char szClassName[] = TEXT ( "DrawFlower" );
HWND hwnd;
MSG msg;
WNDCLASSEX wc = { 0 };
wc.hInstance = hThisInstance;
wc.lpszClassName = szClassName;
wc.lpfnWndProc = WindowProcedure;
wc.style = CS_DBLCLKS;
wc.cbSize = sizeof ( WNDCLASSEX );
wc.hIcon = LoadIcon ( NULL, IDI_APPLICATION );
wc.hIconSm = LoadIcon ( NULL, IDI_APPLICATION );
wc.hCursor = LoadCursor ( NULL, IDC_ARROW );
wc.hbrBackground = ( HBRUSH ) ( COLOR_WINDOW+1 );
if ( !RegisterClassEx ( &wc ) ) return 0;
hwnd = CreateWindowEx ( 0, szClassName, szClassName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, HWND_DESKTOP, NULL, hThisInstance, NULL );
ShowWindow ( hwnd, nFunsterStil );
while ( GetMessage ( &msg, NULL, 0, 0 ) )
{
TranslateMessage ( &msg );
DispatchMessage ( &msg );
}
return msg.wParam;
}
LRESULT CALLBACK WindowProcedure ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
PAINTSTRUCT ps;
HDC hdc;
switch ( msg )
{
case WM_PAINT:
hdc = BeginPaint ( hwnd, &ps );
OnPaint ( hdc );
EndPaint ( hwnd, &ps );
break;
case WM_DESTROY:
PostQuitMessage ( 0 );
break;
default:
return DefWindowProc ( hwnd, msg, wParam, lParam );
}
return 0;
}
void OnPaint ( HDC hdc )
{
HPEN h;
// 画蝴蝶结
DrawTie ( hdc, 195, 354, RGB ( 255,0,255 ) );
// 画枝干
h = CreatePen ( PS_SOLID, 1, RGB ( 0,255,0 ) );
SelectObject ( hdc, h );
DrawLine ( hdc, 189, 372, 180, 400 );
DrawLine ( hdc, 310, 160, 325, 68 );
DrawLine ( hdc, 310, 160, 187, 374 );
DrawLine ( hdc, 150, 140, 189, 374 );
DrawLine ( hdc, 430, 176, 190, 374 );
DrawLine ( hdc, 370, 110, 187, 374 );
DrawLine ( hdc, 250, 72, 189, 372 );
DrawLine ( hdc, 253, 192, 190, 374 );
DrawLine ( hdc, 189, 372, 187, 400 );
DrawLine ( hdc, 189, 372, 182, 400 );
DrawLine ( hdc, 189, 372, 200, 120 );
DeleteObject ( h );
// 画花朵
DrawFlower ( hdc, 320, 160, RGB ( 255,0,0 ) );
DrawFlower ( hdc, 200, 120, RGB ( 0,255,0 ) );
DrawFlower ( hdc, 150, 140, RGB ( 0,0,255 ) );
DrawFlower ( hdc, 430, 176, RGB ( 255, 127, 0 ) );
DrawFlower ( hdc, 370, 110, RGB ( 239, 179, 52 ) );
DrawFlower ( hdc, 250, 72, RGB ( 235, 95, 186 ) );
DrawFlower ( hdc, 325, 68, RGB ( 228, 119, 98 ) );
DrawFlower ( hdc, 253, 190, RGB ( 247, 169, 117 ) );
}
// 画花朵
void DrawFlower ( HDC hdc, int x, int y, COLORREF c )
{
int x1, y1, x2, y2;
const int d = 30;
double a, e;
HPEN h;
h = CreatePen ( PS_SOLID, 1, c );
SelectObject ( hdc, h );
for ( a = 0; a < 2 * PI; a += PI / 360 )
{
e = d * ( 1 + sin ( a * 5 ) );
x1 = ( int ) ( x + e * cos ( a ) );
y1 = ( int ) ( y + e * sin ( a ) );
x2 = ( int ) ( x + e * cos ( a + PI / 5 ) );
y2 = ( int ) ( y + e * sin ( a + PI / 5 ) );
DrawLine ( hdc, x1, y1, x2, y2 );
}
DeleteObject ( h );
}
// 画蝴蝶结
void DrawTie ( HDC hdc, int x, int y, COLORREF c )
{
int x1, y1, x2, y2;
const int d = 100;
double a, e;
HPEN h;
h = CreatePen ( PS_SOLID, 1, c );
SelectObject ( hdc, h );
for ( a = 0; a < 2 * PI; a += PI / 360 )
{
e = d * ( 1 + sin ( a * 4 ) );
x1 = ( int ) ( x + e * cos ( a ) );
y1 = ( int ) ( y + e * sin ( a ) / 2 );
x2 = ( int ) ( x + e * cos ( a + PI / 9 ) );
y2 = ( int ) ( y + e * sin ( a + PI / 9 ) / 4.5 );
DrawLine ( hdc, x1, y1, x2, y2 );
}
DeleteObject ( h );
}
//画线
void DrawLine ( HDC hdc, int x1, int y1, int x2, int y2 )
{
MoveToEx ( hdc, x1, y1, NULL );
LineTo ( hdc, x2, y2 );
}
[代码运行效果截图]
高级设计师
by: 神马 发表于:2012-08-28 22:37:31 顶(1) | 踩(0) 回复
哈哈,程序与艺术相结合!
回复评论