出于本科教學(xué)的目的,需要使用C語(yǔ)言在Visual Studio下控制臺(tái)應(yīng)用程序中動(dòng)態(tài)繪制曲線,在此查閱了一些資料,制作了一個(gè)繪制動(dòng)態(tài)正弦曲線的Demo,大家可根據(jù)這個(gè)例子查閱GDI、GDI+手冊(cè),根據(jù)需求豐富自己的繪圖程序。
創(chuàng)新互聯(lián)公司是專業(yè)的喀喇沁網(wǎng)站建設(shè)公司,喀喇沁接單;提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行喀喇沁網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
#include <windows.h>//引入wingdi.h
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#define PI 3.1416
#define ORIGINX 0 //曲線起點(diǎn)X坐標(biāo)
#define ORIGINY 200 //曲線起點(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;//畫筆變量
HPEN hPenOld;
TCHAR title[256];//控制臺(tái)程序標(biāo)題
int times = 0;//繪制次數(shù)變量
double datay[XDATALEN];//曲線縱坐標(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è)置曲線畫筆,紅色
hPen2 = CreatePen(PS_SOLID, 3, RGB(0, 0, 255));//設(shè)置X軸畫筆,藍(lán)色
hPenOld = (HPEN)SelectObject(hdc, hPen);
while (1)
{
ClearWind(hdc);//清屏
hPenOld = (HPEN)SelectObject(hdc, hPen);//選擇畫筆
MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移動(dòng)到起點(diǎn)
for (int i = 0; i < XDATALEN; i++)
{
datay[i] = sin(0.1*i + times);//生成曲線縱坐標(biāo)數(shù)組
}
for (int i = 0; i < XDATALEN; i++)
{
//繪制線段,連接前一個(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);//選擇畫筆
MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移動(dòng)到起點(diǎn)
LineTo(hdc, ORIGINX + LENGTHX, ORIGINY);//繪制X軸直線
times++;
Sleep(100);//延時(shí)100ms
if (kbhit())//檢查是否有按鍵按下
{
if (_getch() == 0x1b)//若按下ESC鍵跳出循環(huán)
{
break;
}
}
}
DeleteObject(hPen);//刪除畫筆
DeleteObject(hPen2);//刪除畫筆
return 0;
}運(yùn)行結(jié)果如下所示:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
文章題目:C語(yǔ)言控制臺(tái)應(yīng)用程序GDI繪制正弦曲線
網(wǎng)站鏈接:http://www.jbt999.com/article14/psiode.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、微信小程序、標(biāo)簽優(yōu)化、ChatGPT、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)