• VC++绘制金刚石(MFC)



    void CTxx1View::OnDraw(CDC* pDC)
    {
    CTxx1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here

    //CDC * pDC=GetDC();//设备上下文指针



    typedef struct
    {
    double x;
    double y;
    }zuobiao;


    zuobiao P[n];

    CRect rect;//定义矩形对象

    GetClientRect(&rect);//获得客户区矩形的大小



    pDC->SetMapMode (MM_ANISOTROPIC);//自定义坐标系

    pDC->SetWindowExt(rect.Width(),rect.Height());//设置窗口比例

    pDC->SetViewportExt(rect.Width(),rect.Height());//设置视区比例且y轴向上

    pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);//设置客户区中心为坐标原点



    rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);//矩形与客户区重合



    CPen NewPen,*pOldPen;//定义画笔



    NewPen.CreatePen (PS_SOLID,1,RGB(0,0,255));//创建蓝色画笔

    pOldPen=pDC->SelectObject(&NewPen);//将蓝色画笔选人设备上下文



    double Alpha,Theta;

    Theta=2*PI/n;//为等分角

    Alpha=PI/2-Theta;//起始角

    //极坐标求值

    for(int i=0;i<n;i++)

    {

    P[i].x=r*cos(i*Theta+Alpha);

    P[i].y=r*sin(i*Theta+Alpha);

    }

    //二重循环,连线(P[i]为起点,P[j]为终点)

    for(i=0;i<=n-2;i++)

    {

    for(int j=i+1;j<=n-1;j++)

    {

    pDC->MoveTo(Round(P[i].x),Round(P[i].y));

    pDC->LineTo(Round(P[j].x),Round(P[j].y));

    }

    }



    pDC->SelectObject(pOldPen);//恢复设备环境中的元画笔

    NewPen.DeleteObject (http://www.my516.com);//删除已成自由状态的蓝色画笔

    ReleaseDC(pDC);//释放设备指针

    }
    --------------------- 

  • 相关阅读:
    rabbitmq系统学习(三)集群架构
    rabbitmq系统学习(二)
    rabbitmq系统学习(一)
    itext实现pdf自动定位合同签订
    itext7知识点研究(PDF编辑)
    itext实现合同尾部签章部分自动添加,定位签名
    ELK实战(Springboot日志输出查找)
    [Wireshark]_002_玩转数据包
    [Wireshark]_001_入门
    [Objective-C] 014_Objective-C 代码规范指南
  • 原文地址:https://www.cnblogs.com/ly570/p/11014068.html
Copyright © 2020-2023  润新知