zoukankan      html  css  js  c++  java
  • 绘制一朵樱花

    模板

    代码:

    #define _USE_MATH_DEFINES
    #include<cmath>

    	HGDIOBJ hPen;
    	HGDIOBJ hPenOld;
    	static POINT skrcenter = {600, 300};
    	static int skrvertex = 90;
    	static int skrvertexex = 120;
    	static int skrpetal = 150;
    	static int skrpetalex = 90;
    	static double skrota = -M_PI / 2;
    	const static double ccrota = M_PI/5;
    	POINT skroutline[10][4];
    	
    	switch (uMsg)
    	{
    	case WM_PAINT:
            ……
    		x = xChar * xPos;//横坐标 - x
    		y = yChar * yPos;//纵坐标 - y
    		hPen = CreatePen(PS_SOLID, 10, RGB(245, 155, 195));
    		hPenOld = SelectObject(hdc, hPen);
    		
    		//确定bezier曲线基准点
    		for (int i = 0;i < 5; i++) 
    		{
    			skroutline[2 * i][0].x = skrpetal * cos(double(2 * i * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i][0].y = skrpetal * sin(double(2 * i * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i][1].x = (skrpetal + skrpetalex) * cos(double(2 * i * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i][1].y = (skrpetal + skrpetalex) * sin(double(2 * i * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i][2].x = (skrvertex + skrvertexex) * cos(double((2 * i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i][2].y = (skrvertex + skrvertexex) * sin(double((2 * i + 1) * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i][3].x = skrvertex * cos(double((2 * i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i][3].y = skrvertex * sin(double((2 * i + 1) * ccrota) + skrota) + skrcenter.y - y;
    
    			skroutline[2 * i + 1][0].x = skrvertex * cos(double((2 * i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i + 1][0].y = skrvertex * sin(double((2 * i + 1) * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i + 1][1].x = (skrvertex + skrvertexex) * cos(double((2 * i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i + 1][1].y = (skrvertex + skrvertexex) * sin(double((2 * i + 1) * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i + 1][2].x = (skrpetal + skrpetalex) * cos(double(2 * (i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i + 1][2].y = (skrpetal + skrpetalex) * sin(double(2 * (i + 1) * ccrota) + skrota) + skrcenter.y - y;
    			skroutline[2 * i + 1][3].x = skrpetal * cos(double(2 * (i + 1) * ccrota) + skrota) + skrcenter.x - x;
    			skroutline[2 * i + 1][3].y = skrpetal * sin(double(2 * (i + 1) * ccrota) + skrota) + skrcenter.y - y;
    		}
    
    		//使用bezier曲线绘制
    		for (int i = 0; i < 10; i++)
    		{
    			PolyBezier(hdc, skroutline[i], 4);
    		}
    
    		SelectObject(hdc, hPenOld);
    		DeleteObject(hPen);
            ……
            }

    效果:

  • 相关阅读:
    Strust2学习笔记
    EL与OGNL区别
    十进制与其他进制转换
    JSTL
    <jsp:include>和<%@include%>区别
    AngularJS 内置过滤器
    ubuntu下swift安装
    ubuntu下gerrit 安装部署
    java日期操作
    SpringMVC GET请求中文数据传递到Server端乱码
  • 原文地址:https://www.cnblogs.com/eternalmoonbeam/p/10872191.html
Copyright © 2011-2022 走看看