您的当前位置:首页正文

C语言控制台应用程序GDI绘制正弦曲线

2022-12-11 来源:步旅网
C语⾔控制台应⽤程序GDI绘制正弦曲线

出于本科教学的⽬的,需要使⽤C语⾔在Visual Studio下控制台应⽤程序中动态绘制曲线,在此查阅了⼀些资料,制作了⼀个绘制动态正弦曲线的Demo,⼤家可根据这个例⼦查阅GDI、GDI+⼿册,根据需求丰富⾃⼰的绘图程序。

#include //引⼊wingdi.h#include #include #include #include

#define PI 3.1416

#define ORIGINX 0 //曲线起点X坐标#define ORIGINY 200 //曲线起点Y坐标#define LENGTHX 800 //X坐标轴长度#define LENGTHY 300 //Y坐标轴长度#define XDATALEN 300//X坐标数据量

HDC hdc = 0;//控制台绘图设备描述句柄 HDCHPEN hPen, hPen2;//画笔变量HPEN hPenOld;

TCHAR title[256];//控制台程序标题int times = 0;//绘制次数变量

double datay[XDATALEN];//曲线纵坐标数组

//绘制清屏矩形

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

//绘制⿊⾊矩形,范围可根据需要⾃⾏更改

Rectangle(hdc, ORIGINX, 0, ORIGINX + LENGTHX + 1, ORIGINY + LENGTHY + 1);}

int main(){

//获取控制台标题

GetConsoleTitle(title, 256);

//先通过FindWindow函数借助标题获取窗⼝句柄HWND,之后再利⽤GetDC函数借助HWND获取HDC hdc = GetDC(FindWindow(0, title));

hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));//设置曲线画笔,红⾊ hPen2 = CreatePen(PS_SOLID, 3, RGB(0, 0, 255));//设置X轴画笔,蓝⾊ hPenOld = (HPEN)SelectObject(hdc, hPen);

while (1) {

ClearWind(hdc);//清屏

hPenOld = (HPEN)SelectObject(hdc, hPen);//选择画笔 MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移动到起点

for (int i = 0; i < XDATALEN; i++) {

datay[i] = sin(0.1*i + times);//⽣成曲线纵坐标数组 }

for (int i = 0; i < XDATALEN; i++) {

//绘制线段,连接前⼀个点与下⼀个点,第⼆个参数为⽬标点x坐标,第三个参数为y坐标

LineTo(hdc, LENGTHX * i / XDATALEN + ORIGINX, 0.5 * LENGTHY * datay[i] + ORIGINY); }

//创建绘制x轴的pen并将其选⼊设备上下⽂

hPenOld = (HPEN)SelectObject(hdc, hPen2);//选择画笔 MoveToEx(hdc, ORIGINX, ORIGINY, NULL);//移动到起点 LineTo(hdc, ORIGINX + LENGTHX, ORIGINY);//绘制X轴直线 times++;

Sleep(100);//延时100ms

if (kbhit())//检查是否有按键按下 {

if (_getch() == 0x1b)//若按下ESC键跳出循环 {

break; } } }

DeleteObject(hPen);//删除画笔 DeleteObject(hPen2);//删除画笔 return 0;}

运⾏结果如下所⽰:

以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

因篇幅问题不能全部显示,请点此查看更多更全内容