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

出于本科教学的目的,需要使用C语言在V isual Studio下控制台应用程序中动态绘制曲线,在 查阅了一些资料,制作了一个绘

制动态正弦曲线的Demo ,大家可根据这个例子查阅GDI、GDI+手册,根据需求丰富自己的绘图程序。

#include //引入wingdi.h

#include

#include

#include

#include

#define PI 3.1416

#define ORIGI X 0 //曲线起点X坐标

#define ORIGI Y 200 //曲线起点Y坐标

#define LE GTHX 800 //X坐标轴长度

#define LE GTHY 300 //Y坐标轴长度

#define XDATALE 300//X坐标数据量

HDC hdc = 0;//控制台绘图设备描述句柄 HDC

HPE hPen, hPen2;//画笔变量

HPE hPenOld;

TCHAR title[256];//控制台程序标题

int times = 0;//绘制次数变量

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

//绘制清屏矩形

void ClearWind(HDC hdc)

{

HPE 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, ORIGI X, 0, ORIGI X + LE GTHX + 1, ORIGI Y + LE GTHY + 1);

}

int main()

{

//获取控制台标题

GetConsoleTitle(title, 256);

//先通过FindWindow函数借助标题获取窗口句柄HW D,之后再利用GetDC函数借助HW D获取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 = (HPE )SelectObject(hdc, hPen);

while (1)

{

ClearWind(hdc);//清屏

hPenOld = (HPE )SelectObject(hdc, hPen);//选择画笔

MoveToEx(hdc, ORIGI X, ORIGI Y, ULL);//移动到起点

for (int i = 0; i < XDATALE ; i++)

{

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

}

for (int i = 0; i < XDATALE ; i++)

{

//绘制线段,连接前一个点与下一个点,第二个参数为目标点x坐标,第三个参数为y坐标

LineTo(hdc, LE GTHX * i / XDATALE + ORIGI X, 0.5 * LE GTHY * datay[i] + ORIGI Y);

}

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

hPenOld = (HPE )SelectObject(hdc, hPen2);//选择画笔

MoveToEx(hdc, OR

绘制正弦函数的c语言程序,C语言控制台应用程序GDI绘制正弦曲线.pdf相关推荐

  1. 在Windows程序中打开控制台的程序

    //在Windows程序中打开控制台的程序 #include <stdio.h> #include <io.h> #include <fcntl.h> BOOL C ...

  2. java 抛硬币程序_C#的控制台应用程序实现模拟抛硬币的过程

    首先,在VS2005中新建一个控制台应用程序: 应用程序的名字为:PlayCoin (1)实现抛硬币的完整代码如下: using System; using System.Collections.Ge ...

  3. 在控制台程序中隐藏控制台窗口

    在控制台程序中隐藏控制台窗口 大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只 ...

  4. 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法

    1. 引言 几年前,笔者在做某项目时,需要根据开票方的实际信息(含企业名称,社会信用代码,印章编号)绘制某椭圆形的专用章,加盖到PDF版式文件上,并使用开票方的证书信息进行签名,以防范版式文件伪造.抵 ...

  5. windows应用程序与控制台应用程序的区别

    从表面上来看控制台程序运行时是在DOS环境下或者模拟dos环境运行的程序运行时一般会启动一个提示符窗口.而应用程序是Windows环境下的窗口程序.运行时一般会启动一个窗口画面.例如病毒木马就不显示 ...

  6. 总结-控制台(Console)程序和Windows程序的区别

    这是<Programming Microsoft Windows with C#>(作者是Charles Petzold)一书中找到的介绍: 此编译器开关没有做任何非常深刻的事情. 它实际 ...

  7. 在控制台程序中隐藏控制台窗口!

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

  8. 创建C#控制台应用程序

    VS的下载 下载方式:微信公众号软件安装管家内有相关链接 VS2017下载 创建C#控制台应用程序:选择控制台应用程序 C#代码的基本结构: 命名空间是啥? *一种层次结构 一个项目可以有多个命名空间 ...

  9. qt 隐藏控制台_在控制台程序中隐藏控制台窗口

    大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...

最新文章

  1. 董东 java_Java面向对象程序设计
  2. 两大AI技术集于一身,有道词典笔3从0到1的飞跃
  3. RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置
  4. ?Web开发者需要知道的CSS Tricks
  5. 电脑卡顿,最先升级这个硬件,运行速度可快速提升!
  6. 关于HTML的盒子的一些小问题
  7. 对计算机视觉研究的认识,计算机视觉(作业)
  8. Angular问题02 创建模块失败、 angular-cli名称问题、升级angular-cli
  9. 获取checkbox后面的文本内容
  10. Python套接字编程(1)——socket模块与套接字编程
  11. 常用的网络操作系统有哪些?它们各具有什么特点?
  12. YouTube技术架构
  13. 数字电路基础:系统设计优化
  14. java 社交网站_java学习之电影《社交网络》Facemash算法实现
  15. 设置iPhone来电铃声(图文教程)
  16. 第一次电话面试失败之后
  17. 腾讯云 mysql 数据库名_腾讯云数据库MySQL如何选择配置
  18. 前端框架VUE学习纪要
  19. php qq昵称,自写与收集的一些免费的API接口(获取QQ昵称、头像、QQ秀等等...)...
  20. Linux中的split命令,文件切割

热门文章

  1. 工作了挺无奈,身不由己
  2. C语言的文件操作(文件指针、文件缓冲区、文件的打开、读写操作)
  3. 计算机加个微信教程,电脑上微信教程
  4. 如何做个直播应用建设?
  5. 在java中append是什么_Java中的append方法是什么?
  6. qPCR技术发展史及最新进展
  7. 人工智能玩上瘾了,我要挑战电脑围棋难题,困难重重
  8. 分期花呗 真有这么一个公司,坑人的短信
  9. 一文搞懂什么VR,什么是6Dof,欧拉角,四元数转视图矩阵
  10. python查找excel中内容_python excel表格数据-python 如何读取 excel 指定单元格内容