欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言控制臺(tái)應(yīng)用程序GDI繪制正弦曲線(xiàn)

 更新時(shí)間:2019年06月01日 10:23:02   作者:孤飛云逝  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言控制臺(tái)應(yīng)用程序GDI繪制正弦曲線(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

出于本科教學(xué)的目的,需要使用C語(yǔ)言在Visual Studio下控制臺(tái)應(yīng)用程序中動(dòng)態(tài)繪制曲線(xiàn),在此查閱了一些資料,制作了一個(gè)繪制動(dòng)態(tài)正弦曲線(xiàn)的Demo,大家可根據(jù)這個(gè)例子查閱GDI、GDI+手冊(cè),根據(jù)需求豐富自己的繪圖程序。

#include <windows.h>//引入wingdi.h
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <conio.h>
 
#define PI 3.1416
 
#define ORIGINX 0 //曲線(xiàn)起點(diǎn)X坐標(biāo)
#define ORIGINY 200 //曲線(xiàn)起點(diǎn)Y坐標(biāo)
#define LENGTHX 800 //X坐標(biāo)軸長(zhǎng)度
#define LENGTHY 300 //Y坐標(biāo)軸長(zhǎng)度
#define XDATALEN 300//X坐標(biāo)數(shù)據(jù)量
 
HDC hdc = 0;//控制臺(tái)繪圖設(shè)備描述句柄 HDC
HPEN hPen, hPen2;//畫(huà)筆變量
HPEN hPenOld;
TCHAR title[256];//控制臺(tái)程序標(biāo)題
int times = 0;//繪制次數(shù)變量
double datay[XDATALEN];//曲線(xiàn)縱坐標(biāo)數(shù)組
 
  //繪制清屏矩形
void ClearWind(HDC hdc)
{
 HPEN hPen;
 HBRUSH hBrush;
 hBrush = CreateSolidBrush(RGB(0, 0, 0));
 hPen = CreatePen(PS_SOLID, 0, RGB(0, 0, 0));
 SelectObject(hdc, hBrush);
 SelectObject(hdc, hPen);
 //繪制黑色矩形,范圍可根據(jù)需要自行更改
 Rectangle(hdc, ORIGINX, 0, ORIGINX + LENGTHX + 1, ORIGINY + LENGTHY + 1);
}
 
int main()
{
 //獲取控制臺(tái)標(biāo)題
 GetConsoleTitle(title, 256);
 //先通過(guò)FindWindow函數(shù)借助標(biāo)題獲取窗口句柄HWND,之后再利用GetDC函數(shù)借助HWND獲取HDC
 hdc = GetDC(FindWindow(0, title));
 hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));//設(shè)置曲線(xiàn)畫(huà)筆,紅色
 hPen2 = CreatePen(PS_SOLID, 3, RGB(0, 0, 255));//設(shè)置X軸畫(huà)筆,藍(lán)色
 hPenOld = (HPEN)SelectObject(hdc, hPen);
 
 while (1)
 {
 ClearWind(hdc);//清屏
 hPenOld = (HPEN)SelectObject(hdc, hPen);//選擇畫(huà)筆
 MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移動(dòng)到起點(diǎn)
 
 for (int i = 0; i < XDATALEN; i++)
 {
 datay[i] = sin(0.1*i + times);//生成曲線(xiàn)縱坐標(biāo)數(shù)組
 }
 
 for (int i = 0; i < XDATALEN; i++)
 {
 //繪制線(xiàn)段,連接前一個(gè)點(diǎn)與下一個(gè)點(diǎn),第二個(gè)參數(shù)為目標(biāo)點(diǎn)x坐標(biāo),第三個(gè)參數(shù)為y坐標(biāo)
 LineTo(hdc, LENGTHX * i / XDATALEN + ORIGINX, 0.5 * LENGTHY * datay[i] + ORIGINY);
 }
 //創(chuàng)建繪制x軸的pen并將其選入設(shè)備上下文
 hPenOld = (HPEN)SelectObject(hdc, hPen2);//選擇畫(huà)筆
 MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移動(dòng)到起點(diǎn)
 LineTo(hdc, ORIGINX + LENGTHX, ORIGINY);//繪制X軸直線(xiàn)
 times++;
 Sleep(100);//延時(shí)100ms
 
 if (kbhit())//檢查是否有按鍵按下
 {
 if (_getch() == 0x1b)//若按下ESC鍵跳出循環(huán)
 {
 break;
 }
 }
 }
 
 DeleteObject(hPen);//刪除畫(huà)筆
 DeleteObject(hPen2);//刪除畫(huà)筆
 return 0;
}

運(yùn)行結(jié)果如下所示:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C++中static的用法

    詳解C++中static的用法

    這篇文章主要介紹了c++中static的用法詳解,C 語(yǔ)言的 static 關(guān)鍵字有三種用途,具體內(nèi)容詳情大家跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • C++實(shí)現(xiàn)Huffman的編解碼

    C++實(shí)現(xiàn)Huffman的編解碼

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)Huffman的編解碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • c++中string和vector的詳細(xì)介紹

    c++中string和vector的詳細(xì)介紹

    這篇文章主要介紹了c++中string和vector的詳細(xì)介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • C語(yǔ)言?超詳細(xì)講解鏈接器

    C語(yǔ)言?超詳細(xì)講解鏈接器

    在C語(yǔ)言中,一個(gè)重要的思想就是分別編譯,即若干個(gè)源程序能夠在不一樣的時(shí)候單獨(dú)進(jìn)行編譯,而后在恰當(dāng)?shù)臅r(shí)候整合到一塊兒??墒擎溄悠魍ǔJ桥cC編譯器分離的,鏈接器如何作到把若干個(gè)C源程序合并成一個(gè)總體呢,我們一起來(lái)看看
    2022-03-03
  • C++實(shí)現(xiàn)LeetCode(769.可排序的最大塊數(shù))

    C++實(shí)現(xiàn)LeetCode(769.可排序的最大塊數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(769.可排序的最大塊數(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解C++-(=)賦值操作符、智能指針編寫(xiě)

    詳解C++-(=)賦值操作符、智能指針編寫(xiě)

    C++的智能指針是克服C++大坑的非常有用的的手段,之所以說(shuō)它智能,是因?yàn)樗鼮槌绦騿T克服了重要的編程問(wèn)題——懸掛指針,下面通過(guò)本文給大家分享C++-(=)賦值操作符、智能指針編寫(xiě),感興趣的朋友一起看看吧
    2018-03-03
  • 實(shí)現(xiàn)posix消息隊(duì)列示例分享

    實(shí)現(xiàn)posix消息隊(duì)列示例分享

    這篇文章主要介紹了實(shí)現(xiàn)posix消息隊(duì)列示例,學(xué)習(xí)記錄鎖,線(xiàn)程互斥量,線(xiàn)程條件變量,內(nèi)存映射,信號(hào),線(xiàn)程的綜合應(yīng)用,需要的朋友可以參考下
    2014-02-02
  • C/C++經(jīng)典算法之約瑟夫問(wèn)題詳解

    C/C++經(jīng)典算法之約瑟夫問(wèn)題詳解

    這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典算法之約瑟夫問(wèn)題的相關(guān)資料,約瑟夫環(huán)問(wèn)題是一道經(jīng)典的數(shù)據(jù)結(jié)構(gòu)的題目,本文介紹了解決約瑟夫問(wèn)題的三種方法,需要的朋友可以參考下
    2021-07-07
  • 詳解C++編程中對(duì)二進(jìn)制文件的讀寫(xiě)操作

    詳解C++編程中對(duì)二進(jìn)制文件的讀寫(xiě)操作

    這篇文章主要介紹了C++編程中對(duì)二進(jìn)制文件的讀寫(xiě)操作,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • 詳解C++ 創(chuàng)建文件夾的四種方式

    詳解C++ 創(chuàng)建文件夾的四種方式

    這篇文章主要介紹了C++ 創(chuàng)建文件夾的四種方式,本文示例都是在 E:\database 路徑下創(chuàng)建一個(gè)叫做 testFolder 的文件夾,文章通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-11-11

最新評(píng)論