一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

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

 wangprince2017 2018-07-14

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

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

一、實驗目的

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

  

二、實驗內容及步驟

 實驗任務

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

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

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

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

 實驗內容

   編寫一個程序,在屏幕上出現一個圓心沿正弦曲線軌跡移動的實心圓,且每隔四分之一周期,圓的填充色和圓的周邊顏色都發(fā)生變化,同時圓的半徑在四分之一周期之內由正弦曲線幅值的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;   //定義窗口處理函數

    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)結束即程序終止時將信息返回系統(tǒng)

}

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

{

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

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

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

PAINTSTRUCT PtStr;//定義指向包含繪圖信息的結構體變量

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

                     }

}

程序運行結果:

 

 

三、實驗結果

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

 

 

 

 

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美又大又黄刺激视频| 开心久久综合激情五月天| 国产内射一级一片内射高清| 久久天堂夜夜一本婷婷| 一级片黄色一区二区三区| 日韩美女偷拍视频久久| 日本特黄特色大片免费观看 | 欧美中文字幕一区在线| 国产精品伦一区二区三区四季| 内用黄老外示儒术出处| 亚洲综合色婷婷七月丁香| 欧美日韩中黄片免费看| 日本不卡一本二本三区| 午夜亚洲少妇福利诱惑| 久久大香蕉一区二区三区| 在线观看日韩欧美综合黄片| 日韩人妻中文字幕精品| 成年女人午夜在线视频| 欧美日韩精品综合一区| 亚洲精品偷拍视频免费观看| 区一区二区三中文字幕| 国产又粗又猛又长又大| 91人妻丝袜一区二区三区| 欧美一级特黄大片做受大屁股| 国产精品视频一区二区秋霞| 久热久热精品视频在线观看| 国产精品二区三区免费播放心| 国产日韩欧美综合视频| 欧美六区视频在线观看| 少妇肥臀一区二区三区| 少妇人妻一级片一区二区三区| 亚洲综合一区二区三区在线| 国产又粗又深又猛又爽又黄| 激情国产白嫩美女在线观看| 日木乱偷人妻中文字幕在线| 99久久精品一区二区国产| 亚洲品质一区二区三区| 91亚洲国产成人久久精品麻豆| 日韩在线免费看中文字幕| 太香蕉久久国产精品视频| 国产av精品高清一区二区三区 |