绘制正弦函数的c语言程序,C语言控制台应用程序GDI绘制正弦曲线.pdf
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相关推荐
- 在Windows程序中打开控制台的程序
//在Windows程序中打开控制台的程序 #include <stdio.h> #include <io.h> #include <fcntl.h> BOOL C ...
- java 抛硬币程序_C#的控制台应用程序实现模拟抛硬币的过程
首先,在VS2005中新建一个控制台应用程序: 应用程序的名字为:PlayCoin (1)实现抛硬币的完整代码如下: using System; using System.Collections.Ge ...
- 在控制台程序中隐藏控制台窗口
在控制台程序中隐藏控制台窗口 大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只 ...
- 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法
1. 引言 几年前,笔者在做某项目时,需要根据开票方的实际信息(含企业名称,社会信用代码,印章编号)绘制某椭圆形的专用章,加盖到PDF版式文件上,并使用开票方的证书信息进行签名,以防范版式文件伪造.抵 ...
- windows应用程序与控制台应用程序的区别
从表面上来看控制台程序运行时是在DOS环境下或者模拟dos环境运行的程序运行时一般会启动一个提示符窗口.而应用程序是Windows环境下的窗口程序.运行时一般会启动一个窗口画面.例如病毒木马就不显示 ...
- 总结-控制台(Console)程序和Windows程序的区别
这是<Programming Microsoft Windows with C#>(作者是Charles Petzold)一书中找到的介绍: 此编译器开关没有做任何非常深刻的事情. 它实际 ...
- 在控制台程序中隐藏控制台窗口!
大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...
- 创建C#控制台应用程序
VS的下载 下载方式:微信公众号软件安装管家内有相关链接 VS2017下载 创建C#控制台应用程序:选择控制台应用程序 C#代码的基本结构: 命名空间是啥? *一种层次结构 一个项目可以有多个命名空间 ...
- qt 隐藏控制台_在控制台程序中隐藏控制台窗口
大家都知道,当编写一个win32 console application时,当运行此类程序的时候 默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序 中运行一段功能代码, ...
最新文章
- 董东 java_Java面向对象程序设计
- 两大AI技术集于一身,有道词典笔3从0到1的飞跃
- RL之Q Learning:利用强化学习之Q Learning实现走迷宫—训练智能体走到迷宫(简单迷宫)的宝藏位置
- ?Web开发者需要知道的CSS Tricks
- 电脑卡顿,最先升级这个硬件,运行速度可快速提升!
- 关于HTML的盒子的一些小问题
- 对计算机视觉研究的认识,计算机视觉(作业)
- Angular问题02 创建模块失败、 angular-cli名称问题、升级angular-cli
- 获取checkbox后面的文本内容
- Python套接字编程(1)——socket模块与套接字编程
- 常用的网络操作系统有哪些?它们各具有什么特点?
- YouTube技术架构
- 数字电路基础:系统设计优化
- java 社交网站_java学习之电影《社交网络》Facemash算法实现
- 设置iPhone来电铃声(图文教程)
- 第一次电话面试失败之后
- 腾讯云 mysql 数据库名_腾讯云数据库MySQL如何选择配置
- 前端框架VUE学习纪要
- php qq昵称,自写与收集的一些免费的API接口(获取QQ昵称、头像、QQ秀等等...)...
- Linux中的split命令,文件切割