• Windows编程——万花筒绘制


    #include<windows.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #define Pi 3.1415926
    long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam);
    BOOL InitWindowsClass(HINSTANCE hInstance);
    BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
    {
    	MSG Message;
    	if (!InitWindowsClass(hInstance))		return FALSE;
    	if (!InitWindows(hInstance, nCmdShow))	return FALSE;
    	while (GetMessage(&Message, 0, 0, 0))	
    	{
    		TranslateMessage(&Message);
    		DispatchMessage(&Message);
    	}
    	return Message.wParam;
    }
    long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)
    {
    	HDC hDC;   					
    	HPEN hPen;					
    	PAINTSTRUCT PtStr; 		
    	int n = 25;
    	POINT points[25];
    	double angel = 2 * Pi / n;
    	for (int i = 0; i < n; i++)
    	{
    		points[i].x = static_cast<long>(320 + 180 * cos(i*angel));
    		points[i].y = static_cast<long>(250 + 180 * sin(i*angel));
    	}
    	switch (iMessage)  			
    	{
    	case WM_PAINT:    		
    		hDC = BeginPaint(hWnd, &PtStr);
    		for (int i = 0; i < 25; i++)
    		{
                hPen = (HPEN)GetStockObject(NULL_PEN); 
    		    SelectObject(hDC, hPen);    	
    			LineTo(hDC, points[i].x, points[i].y);  		
    			DeleteObject(hPen); 		
    			if (i == 0)
    			{
    				for (int j = 1; j < n; j++)
    				{
    					switch (j % 6)
    					{
    					case 1:
    					case 2:
    						hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); 
    						break;
    					case 3:
    					case 4:
    						hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0)); 
    						break;
    					case 5:
    					case 0:
    						hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); 
    						break;
    					}
    					SelectObject(hDC, hPen);  	
    					LineTo(hDC, points[j].x, points[j].y);
    					MoveToEx(hDC, points[i].x, points[i].y, NULL);
    					DeleteObject(hPen);    
    				}
    			}
    			else
    			{
    				for (int j = i + 1; j < n; j++)
    				{
    					switch (j % 6)
    					{
    					case 1:
    					case 2:
    						hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
    						break;
    					case 3:
    					case 4:
    						hPen = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
    						break;
    					case 5:
    					case 0:
    						hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); 
    						break;
    					}
    					SelectObject(hDC, hPen);  	
    					LineTo(hDC, points[j].x, points[j].y);
    					MoveToEx(hDC, points[i].x, points[i].y, NULL);
    					DeleteObject(hPen);    
    					Sleep(50);
    				}
    			}
    		}
    
    		EndPaint(hWnd, &PtStr);  
    		return 0;
    	case WM_DESTROY: 
    		PostQuitMessage(0);
    		return 0;
    	default:
    		return(DefWindowProc(hWnd, iMessage, wParam, lParam));
    	}
    }
    BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) 
    {
    	HWND hWnd;
    	hWnd = CreateWindow("WinFill",  		 	 
    		"                                                                         万花筒",
    		WS_OVERLAPPEDWINDOW,
    		CW_USEDEFAULT,
    		0,
    		CW_USEDEFAULT,
    		0,
    		NULL,
    		NULL,
    		hInstance,
    		NULL);
    	if (!hWnd)
    		return FALSE;
    	ShowWindow(hWnd, nCmdShow);			
    	UpdateWindow(hWnd);
    	return TRUE;
    }
    BOOL InitWindowsClass(HINSTANCE hInstance) 		
    {
    	WNDCLASS WndClass;
    	WndClass.cbClsExtra = 0;
    	WndClass.cbWndExtra = 0;
    	WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));
    	WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    	WndClass.hIcon = LoadIcon(NULL, "END");
    	WndClass.hInstance = hInstance;
    	WndClass.lpfnWndProc = WndProc;
    	WndClass.lpszClassName = "WinFill";
    	WndClass.lpszMenuName = NULL;
    	WndClass.style = CS_HREDRAW | CS_VREDRAW;
    	return RegisterClass(&WndClass);
    }
    
    
    <pre name="code" class="cpp">绘制万花筒时的截图:
     
    
    

















    尝试了多次后,终于可以让图片在博客里显示了...... 
    
       
    
    
  • 相关阅读:
    word break II
    leetcode新题
    tensorflow数据读取过程
    python文本编辑: re.sub-------读取文本,去除指定字符并保存
    Anaconda安装及虚拟环境搭建教程(linux)
    语音合成
    关于Python错误提示: 'str' object is not callable
    语音识别学习阶段性总结(一)
    kaldi学习
    kaldi学习
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/8304769.html
Copyright © 2020-2023  润新知