zoukankan      html  css  js  c++  java
  • 【MFC】利用双缓冲和随机函数rand()实现蒲公英飞舞

    原始日期:2014-05-29 22:44

    这几天有些懒,几乎没怎么学MFC了,好容易有个题目:用双缓冲实现蒲公英飞舞,想来想去也没想到好方法,索性动手开始 写了 ,这一写,得,出来了,呵呵,无意中产生 了一个新算法,不知道网上有没有,反正我是没在百度搜到【MFC】利用双缓冲和随机函数rand()实现蒲公英飞舞 - 毛小虫 - AWorlofMyOwn

    好了,言归正题,老规矩先上关键代码和效果图:
    关键代码:

    //change为坐标变换参数

    for (int i=1;i<=450;i++)
    {

    x=10+rand()%100;//随机产生“变换横坐标”,范围10~100
    y=1+rand()%100;//随机产生“变换纵坐标”,范围1~100

    //这里如果横纵坐标范围一样,那么产生的蒲公英种子会相对静止的整体移动
    c=0+rand()%5;//change乘以随机数c,产生新的随机坐标变换参数“change*c”
    d=-1+rand()%10;

    //使用MoveTo、LienTo直接画出单个蒲公英种子
    CPen NewPen,*pOldPen;
    NewPen.CreatePen(PS_SOLID,1,RGB(200,200,200));
    pOldPen=pDC->SelectObject(&NewPen);
    pDC->MoveTo(-752+x+change*d,-288+y+change*c);
    pDC->LineTo(-750+x+change*d,-300+y+change*c);
    pDC->LineTo(-758+x+change*d,-290+y+change*c);

    pDC->MoveTo(-740+x+change*d,-290+y+change*c);
    pDC->LineTo(-750+x+change*d,-300+y+change*c);
    pDC->LineTo(-746+x+change*d,-288+y+change*c);
    NewPen.DeleteObject();

    NewPen.CreatePen(PS_SOLID,2,RGB(100,100,100));
    pOldPen=pDC->SelectObject(&NewPen);
    pDC->MoveTo(-750+x+change*d,-300+y+change*c);
    pDC->LineTo(-753+x+change*d,-306+y+change*c);
    }

    【MFC】利用双缓冲和随机函数rand()实现蒲公英飞舞 - 毛小虫 - AWorlofMyOwn
     
    说明:只用双缓冲机制可以容易实现产生的随机坐标位置的蒲公英种子整体移动,但彼此之间是相对禁止的,通过随机数不断调整每次种子坐标移动的距离,可以实现种子之间相对运动的效果。
  • 相关阅读:
    float实例讲解
    Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包)
    eclipse sql server 导出excel文件
    sql server和eclipse连接代码
    sql server和eclipse连接问题
    sql server下载教程
    初识eclipse-java
    java下载和环境变量配置
    sql sever登录问题
    Makefile文件(DE1-soc软件实验”hello_word")
  • 原文地址:https://www.cnblogs.com/mhiauge/p/6908949.html
Copyright © 2011-2022 走看看