小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

編寫一個程序,在屏幕上出現(xiàn)一個圓心沿正弦曲線軌跡移動的實心圓,且每隔四分之一周期,圓的填充色和圓的周邊顏色都發(fā)生變化,同時圓的半徑在四分之一周期之內(nèi)由正弦曲線幅值的0.2倍至0.6倍線性增長。

 wangprince2017 2018-07-14

南京信息工程大學  實驗(實習)報告

實驗(實習)名稱  圖形程序設計及其應用  實驗(實習)日期

一、實驗目的

1.熟悉圖形設備接口的概念及其應用。

  

二、實驗內(nèi)容及步驟

 實驗任務

1.熟悉基于圖形應用的程序設計;

2.掌握刷新技術及其應用;

3.掌握映射模式的應用;

4.掌握繪圖工具的使用。

 實驗內(nèi)容

   編寫一個程序,在屏幕上出現(xiàn)一個圓心沿正弦曲線軌跡移動的實心圓,且每隔四分之一周期,圓的填充色和圓的周邊顏色都發(fā)生變化,同時圓的半徑在四分之一周期之內(nèi)由正弦曲線幅值的0.2倍至0.6倍線性增長。

程序代碼:

#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);

double dfTheta=0,dfRange=100.0;

long i=0,j=0;

long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);

POINT lpSin[100];

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)

{

HWND hwnd ;

MSG Message ;

WNDCLASS wndclass ;

wndclass.cbClsExtra=0;                  //窗口類無擴展

wndclass.cbWndExtra=0;               //窗口實例無擴展

wndclass.hInstance=hInstance;       //當前實例句柄

    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ;      //窗口采用箭頭光標

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);  //窗口背景為白色

wndclass.lpszMenuName=NULL; //窗口中無菜單

wndclass.lpszClassName="SIN" ;  //窗口類名為"窗口"

    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);     //窗口的最小化圖標為缺省圖標

    wndclass.lpfnWndProc=WndProc;   //定義窗口處理函數(shù)

    wndclass.style=0;

    if(!RegisterClass( &wndclass))       //如果注冊失敗則發(fā)出警告

{ MessageBeep(0) ;     

return FALSE ;

}

//---------------- 創(chuàng)建窗口 -------------------

hwnd=CreateWindow(

           "SIN",        //窗口類名

           "4_6",                  //窗口實例的標題名

           WS_OVERLAPPEDWINDOW,   //窗口的風格

           CW_USEDEFAULT,

           0,      //窗口左上角坐標為缺省值

           CW_USEDEFAULT,

           0,      //窗口的高和寬為缺省值

           NULL,                          //此窗口無父窗口

           NULL,                          //此窗口無主菜單

           hInstance,              //創(chuàng)建此窗口的應用程序的當前句柄

         NULL                          //不使用該值

           );

//--------------- 顯示窗口 ----------------------

ShowWindow( hwnd, nCmdShow) ;

//-------------- 繪制用戶區(qū) ---------------------

UpdateWindow(hwnd);

//--------------- 消息循環(huán) ----------------------

for(int j=0;j<100;j++)    //生成正弦曲線的點坐標

 {

lpSin[j].x=(long)(j*2*Pi/100*60);

lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100));

 }

 

while( GetMessage(&Message, 0, 0, 0))

{

           TranslateMessage( &Message) ;

           DispatchMessage( &Message) ;

}

return Message.wParam;       //消息循環(huán)結(jié)束即程序終止時將信息返回系統(tǒng)

}

long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)

{

    HDC hDC;                   //定義指向設備的句柄

HBRUSH hBrush;     //定義指向畫刷的句柄

HPEN hPen;                 //定義指向畫筆的句柄

PAINTSTRUCT PtStr;//定義指向包含繪圖信息的結(jié)構(gòu)體變量

switch(iMessage)                                             //處理消息

{

case WM_PAINT:                                         //處理繪圖消息

           hDC=BeginPaint(hWnd,&PtStr);

           SetWindowOrgEx(hDC,-200,-200,NULL);       //設置映像模式

           hPen=CreatePen(PS_DASH,1,RGB(255,0,0));         //黑色畫筆

           SelectObject(hDC,hPen);       //選擇畫筆

           Polyline(hDC,lpSin,100);

    if(i<=25)                       //第一個1/4周期

{

  hPen=CreatePen(PS_DASH,1,RGB(255,0,0));

            

  hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));

  lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//計算半徑

}

           else if(i<=50)

{

  hPen=CreatePen(PS_DASH,1,RGB(0,255,0));

            

  hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,255,0));

  lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//計算半徑

}

else if(i<=75)

{

  hPen=CreatePen(PS_DASH,1,RGB(0,0,255));

            

  hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(0,0,255));

  lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//計算半徑

}

else

{

  hPen=CreatePen(PS_DASH,1,RGB(255,255,0));

            

  hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,255,0));

  lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);//計算半徑

}

SelectObject(hDC,hBrush);     //選擇畫刷

SelectObject(hDC,hPen);     

        lCentreX=lpSin[i].x;                  //圓心x坐標

           lCentreY=lpSin[i].y;              //圓心y坐標

           Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,

                  lCentreX+lRadious,lCentreY+lRadious);   //畫圓

 

           i++;

           DeleteObject(hPen);               //刪除畫筆

           DeleteObject(hBrush);  //刪除畫刷

           EndPaint(hWnd,&PtStr);       //刪除設備環(huán)境指針

    Sleep(100);                    //0.1

           if(i<100) InvalidateRect(hWnd,NULL,1);         //刷新用戶區(qū)

           return 0;

case WM_DESTROY:          //關閉窗口

           PostQuitMessage(0);            

           return 0;

default:

         return(DefWindowProc(hWnd,iMessage,wParam,lParam));

                     }

}

程序運行結(jié)果:

 

 

三、實驗結(jié)果

   通過本次試驗我了解了基于圖形應用的程序設計,掌握刷新技術及其應用;學會了映射模式的應用;并且基本了解了繪圖工具的使用;進一步加深了對可視化的了解。

 

 

 

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多