怎么用c语言画函数图像

怎么用c语言画函数图像,第1张

我画了半个正弦函数,其余的你可以照着画,欢迎讨论,

#include "stdioh"

#include "conioh"

#include "mathh"

#include "graphicsh"

void main()

{

int driver,mode,i;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,"");

setcolor(15);

for(i=0;i<360;i++)

line(i,200sin(i314/360),i+1,200sin((i+1)314/360));

getch();

restorecrtmode();

}

用 VC 实现 绘图相对还是比较容易的

定义好图元类, 成员 主要有 位置, 线型,填充类型等; 实现绘图方法: 调用 CDC 类的 绘图函数实现绘制;

定义好图元的存储管理, 可以用链表,或数组;

如果 用 文档-视图 框架,在视图的 OnDraw 方法中, 调用各图元的绘图方法, 完成 图形的显示;

      如果没用文档-视图 框架,则在 窗口的 WM_PAINT事件中,完成绘图;

4 设计好交互, 在 WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE等事件中, 进行具体实现 主要新建 , 改变大小, 拖动等

这样基本可以实现 简单的 绘图了

可百度搜索

想用mfc做一个绘图系统,画圆直线矩形填充颜色和平移

有我帮网友作的一个例子

因为平时我们用的c语言是在文本方式下运行的,所以不能够直接用c语言画图,在用c 语言惊醒画图之前,首先应该把c语言从文本模式转换为图形模式,初始化函数是 intgraph(图形驱动器名,图形驱动器模式,图形驱动器路径);一般图形驱动器名定为DETECT,模式为gmode,路径在你安装c语言文件夹里,BGI子目录,

画线的函数是line(x1,y1,x2,y2);分别是线的起始坐标。

其库函数包含在<graphicsh>里

莪这里有个代码,是绘画正弦曲线的

void CSinusoidView::OnDraw(CDC pDC)

{

CSinusoidDoc pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

//建立画笔

CPen cpen,pen;

penCreatePen(PS_SOLID,4,RGB(0,0,0));

cpenCreatePen(PS_SOLID,2,RGB(0,0,255));

pDC->SelectObject(&cpen);

//指定原点

pDC->SetViewportOrg(100,245);

pDC->SetTextColor(RGB(255,0,0));

//绘制横坐标

CString sPIText[]={"-1/2π","","1/2π","π","3/2π","2π","5/2π","3π","7/2π","4π","9/2π","5π"};

for(int n=-1,nTmp=0;nTmp<=660;n++,nTmp+=60)

{

pDC->LineTo(60n,0);

pDC->LineTo(60n,-5);

pDC->MoveTo(60n,0);

pDC->TextOut(60n-sPIText[n+1]GetLength()3,16,sPIText[n+1]);

}

pDC->MoveTo(0,0);

CString sTmp;

//绘制纵坐标

for(n=-4,nTmp=0;nTmp<=180;n++,nTmp=60n)

{

pDC->LineTo(0,60n);

pDC->LineTo(5,60n);

pDC->MoveTo(0,60n);

sTmpFormat("%d",-n);

pDC->TextOut(10,60n,sTmp);

}

double y,radian;

pDC->SelectObject(&pen);

for(int x=-60;x<600;x++)

{

//弧度=X坐标/曲线宽度角系数π

//Y坐标=振幅曲线宽度sin(弧度)

radian =x/((double)602)PI;

y=sin(radian)260;

pDC->MoveTo((int)x,(int)y);

pDC->LineTo((int)x,(int)y);

}

cpenDeleteObject();

penDeleteObject();

}

/请不要看完了就走人/

/帮帮忙,采纳我的答案!/

#include<stdioh>

#include<mathh>

main(){

double

y;

int

x,m,i;

printf("y=sin(x)

[0<x<2pi]\n");

for(y=1;y>=-1;y-=01){

if(y>=0){

m=asin(y)10;

for(x=1;x<m;x++)printf("

");

printf("",m);

for(;x<31-m;x++)printf("

");

printf("\n");}

else{

m=-1asin(y)10;

for(i=0;i<32;i++)printf("

");

for(x=1;x<m;x++)printf("

");

printf("",m);

for(;x<31-m;x++)printf("

");

printf("\n",m);

}

}

}

加些分上去,我把代码贴上来。

/ HELLOC -- Hello, world /

#include <graphicsh>

#include <stdioh>

void save_pic(char fn,int maxx,int maxy){

typedef long LONG;

typedef unsigned char BYTE;

typedef unsigned long DWORD;

typedef unsigned short WORD;

typedef struct tagBITMAPFILEHEADER {

WORD bfType;

DWORD bfSize;

WORD bfReserved1;

WORD bfReserved2;

DWORD bfOffBits;

} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{

DWORD biSize;

LONG biWidth;

LONG biHeight;

WORD biPlanes;

WORD biBitCount;

DWORD biCompression;

DWORD biSizeImage;

LONG biXPelsPerMeter;

LONG biYPelsPerMeter;

DWORD biClrUsed;

DWORD biClrImportant;

} BITMAPINFOHEADER;

int i,j;

FILE fp;

BITMAPFILEHEADER bfh;

BITMAPINFOHEADER bif;

int color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15};

unsigned char rgb[64]={0,0,0,0,0,0,128,0,0,128,0,0,0,128,128,0

,128,0,0,0,128,0,128,0,128,128,0,0,128,128,128,0

,192,192,192,0,0,0,225,0,0,255,0,0,0,255,255,0

,255,0,0,0,255,0,255,0,255,255,0,0,255,255,255,0};

union

{

unsigned char value;

struct

{

unsigned c1:4;

unsigned c2:4;

}color;

}mycolor;

bfhbfType=0x4d42;

bfhbfSize=153718;

bfhbfReserved1=0;

bfhbfReserved2=0;

bfhbfOffBits=118;

bifbiSize=40;

bifbiWidth=640;

bifbiHeight=480;

bifbiPlanes=1;

bifbiBitCount=4;

bifbiCompression=0;

bifbiSizeImage=0;

bifbiXPelsPerMeter=0;

bifbiYPelsPerMeter=0;

bifbiClrUsed=0;

bifbiClrImportant=0;

fp=fopen(fn,"wb");

fwrite(&bfh,sizeof(bfh),1,fp);

fwrite(&bif,sizeof(bif),1,fp);

fwrite(rgb,sizeof(rgb),1,fp);

for(j=maxy-1;j>=0;j--){

for(i=0;i<maxx;i+=2){

mycolorcolorc2=color[getpixel(i,j)];

mycolorcolorc1=color[getpixel(i+1,j)];

putc(mycolorvalue,fp);

}

}

fclose(fp);

}

main()

{

int gd=DETECT,gm;

int maxx,maxy,key;

registerbgidriver(EGAVGA_driver); /用了这个函数后,你的程序就算在下面没指明BGI

路径也能在每台机器上运行,具体做法见我们论坛上贴子,<独立图形程序的建立>

>

以上就是关于怎么用c语言画函数图像全部的内容,包括:怎么用c语言画函数图像、如何在VC++6.0中使用C语言简单的绘图画图功能、c语言画图怎么画直方图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9429551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存