怎样用TC画图
比如说,随机生成了100个点(小数),怎样把它们连成曲线画在坐标轴上?
帮忙啊~~~
感激~~
问题点数:100、回复次数:31Top
1 楼Wincent(小龙女)回复于 2003-10-02 10:12:12 得分 0
用 putpixel();Top
2 楼simclock(4700uf)回复于 2003-10-02 10:19:02 得分 10
初始化图形模式,然后LINETO(x,y) 不过应该先把坐标取整吧Top
3 楼tolixiaohui()回复于 2003-10-02 10:41:52 得分 0
polyline()?Top
4 楼westxx(西部小星)回复于 2003-10-02 12:15:54 得分 10
先用initgraph(int *Gdriver,int *Gmode,char *dir)初始化,再用line(int x1,int y1,int x2,int y2)连接各点.
当然,你的点要足够多,不然会很难看.
函数具体形式最好再查查,我记不太清了.Top
5 楼westxx(西部小星)回复于 2003-10-02 12:20:38 得分 0
忘了一点,最后还要用closegraph()关闭图形模式。Top
6 楼hsyouxishe(金笛玉洁)回复于 2003-10-02 14:13:18 得分 0
调用图形库函数
Top
7 楼GhostAdz(鬼斧)回复于 2003-10-02 14:31:59 得分 5
TC有自己的图形库
建议去看
c高级程序设计 王士元Top
8 楼lyr311(老刘:别总在CSDN上逛!!!)回复于 2003-10-02 15:49:07 得分 5
你看看这个网址,我觉得应该有很多你想要的东西的:
http://bbs.icehack.com/wdbread.php?forumid=4&filename=f_129Top
9 楼hu1hao2(huhao)回复于 2003-10-02 15:52:18 得分 10
我也建议你去看C高级程序设计,还有一个很好的tctools,可以加快图形界面的开发.
要画图,首先要使用图形模式,然后直接就可以使用函数库了,但每个厂商都有自己的库,所以,你的代码只能在TC下运行.例如:
line( x1,y1,x2,y2) /* 从点x1,y2 ---点x2,y2 */
lineto(x,y) /*从当前光标点到x,y 点 */
putpixer() 等等,这些具体的使用方法,你也可以去下载tc++ 3.0,他的帮助文件很详细(在<graphic.h>库中)Top
10 楼mfs(玩命蚂蚁)回复于 2003-10-02 16:00:33 得分 5
去www.tc256.com看看,应该能找到答案Top
11 楼cnxiaohai(相声独一处(回归,为了编程,为了C,为了CSDN))回复于 2003-10-02 20:56:02 得分 5
line( x1,y1,x2,y2) /* 从点x1,y2 ---点x2,y2 */
lineto(x,y) /*从当前光标点到x,y 点 */
去学习graphic.hTop
12 楼严黎斌()回复于 2003-10-02 21:01:33 得分 5
用google查以下内容
tc bgi graphics initgraph line lineto
Top
13 楼StepBy(毕业设计中....)回复于 2003-10-02 21:07:37 得分 5
可以下载一个《C语言学习宝典》看看。里面有你想要的很多东西。Top
14 楼qufan(打死不回头)回复于 2003-10-02 21:34:46 得分 0
StepBy(萡萡) 那里有《c语言学习宝典》下载,能不能告诉我地址哦Top
15 楼wxt2301(蓦然回首)回复于 2003-10-02 21:36:13 得分 5
用TC的图形库函数,可参看Turbo C 大全!Top
16 楼yzf115(枫*无情)回复于 2003-10-02 22:38:46 得分 0
.............我无话可说]
Top
17 楼yvhkdragon(剑客)回复于 2003-10-03 23:42:54 得分 5
1》首选得包含"graphics.h"头文件。
2》然后再定义显示器类型和驱动。
3》初始化驱动器initgraph.
下面是一个画圆的例子:
#include<graphics.h>
main()
{
int driver=DETECT; /* 自动搜索驱动 */
int mode;
initgraph(&driver,&mode,""); /* 初始化 */
cleardevice(); /* 清屏 */
setcolor(2); /*设前景色*/
circle(200,200,50); /*画圆*/
colosgraph(); /* 关闭图形模式 */
}Top
18 楼windspeaker()()回复于 2003-10-04 10:37:48 得分 0
偶来完了Top
19 楼locky1982(无情浪子)回复于 2003-10-04 13:35:39 得分 0
看看那些关于画图的函数Top
20 楼zhaochong12(超级大笨鸟)回复于 2003-10-04 13:44:29 得分 0
TC下边有一个*demo.C的文件,是TC下边画图的经典~自己看一下源代码既可~
Top
21 楼dellsong(dellsong)回复于 2003-10-04 13:48:41 得分 0
我正在学习阿我还不知道对不起阿Top
22 楼Ahnol(阿诺)回复于 2003-10-04 18:01:41 得分 0
先调用图形库函数(#include <graphics.h>)
再用其中的函数,例如line ,cirle 之类Top
23 楼YENNIS(小四)回复于 2003-10-04 21:52:31 得分 0
首先感谢大家的支持~~~
其实书我查过,,例子也看了不少,,
可是很少有画随机数的,,
这么说吧,
它的原理是这样的:每两点画一条弧线,点1和点3画一条,点2和点4画一条,这样确保连贯性;然后还要删除点2和点3之间重复画了的部分。。。。这是书上说的,,但是我还是不会啊。。。。。。。
希望大家能给些详细点的建议,,谢谢了~~~Top
24 楼cutestar(猪哥靓)回复于 2003-10-05 16:02:34 得分 0
谁把代码写出来???
我也学学!!!Top
25 楼Ark1984()回复于 2003-10-05 23:29:06 得分 5
我这里有个画图的程序:
#include <stdio.h>
#include <dos.h>
#include <graphics.h>
/* ----------------- */
#define ON 1
#define OFF 2
#define LEFTBUTTON 1
#define RIGHTBUTTON 2
#define BOTHBUTTON 3
int haveMouse=0;
int resetMouse()
{
union REGS r;
r.x.ax=0;
int86(0x33, &r, &r);
haveMouse=r.x.ax;
return haveMouse==0? 0 : r.x.bx;
}
void lightMouse(int op)
{ union REGS r;
if (haveMouse) {
r.x.ax=op;
int86(0x33, &r,&r);
}
}
int getMouseStatus(int *x, int *y)
{
union REGS r;
if (haveMouse) {
r.x.ax=3;
int86(0x33, &r, &r);
*x= r.x.cx;
*y= r.x.dx;
return r.x.bx;
}
else
return 0;
}
void setMouseXY(int x, int y)
{
union REGS r;
if (haveMouse) {
r.x.ax=4;
r.x.cx=x;
r.x.dx=y;
int86(0x33,&r,&r);
}
}
void setMouseRange(int left, int top, int right, int bottom)
{
union REGS r;
if (haveMouse) {
r.x.ax=7;
r.x.cx=left;
r.x.dx=right;
int86(0x33,&r,&r);
r.x.ax=8;
r.x.cx=top;
r.x.dx=bottom;
int86(0x33,&r,&r);
}
}
/* ------------- */
int mouseIn(int mx, int my, int x, int y, int width, int height)
{
return (mx>=x) && (mx<x+width) && (my>=y) && (mx<y+height);
}
main()
{
int mode=VGAHI;
int driver=VGA;
int color=WHITE;
int fillcolor=WHITE;
int x,y,button,i;
initgraph(&driver, &mode, "c:\tc");
rectangle(0,429,639,479);
moveto(10,440);
outtext("Line Color");
moveto(10,460);
outtext("Fill Color");
for(i=0; i<16; i++){
rectangle(100+i*25,435,124+i*25,475);
setfillstyle(1,i);
bar(101+i*25,436,123+i*25,474);
}
line(100,455,499,455);
moveto(505,440);
setcolor(1);
outtext("Linewidth:1");
bar(600,435,630,455);
moveto(505,460);
setcolor(2);
outtext("Linewidth:3");
bar(600,456,630,476);
setcolor(WHITE);
resetMouse();
lightMouse(ON);
while(1) {
button=getMouseStatus(&x, &y);
if (button==LEFTBUTTON) {
if (mouseIn(x,y,0,429,639,50)) {
if (mouseIn(x,y,100,435,400,20)) {
color=(x-100)/25;
setcolor(color);
}
if (mouseIn(x,y,100,455,400,20)) {
fillcolor=(x-100)/25;
setfillstyle(1,fillcolor);
}
if (mouseIn(x,y,600,435,30,20)) {
setlinestyle(0,0,1);
outtext("1");
}
if (mouseIn(x,y,600,456,30,20)) {
setlinestyle(0,0,3);
outtext("3");
}
/* if (mouseIn(x,y,550,456,75,14)) {
outtext("out");
break;
} */
}
else {
lightMouse(OFF);
lineto(x,y);
lightMouse(ON);
}
}
else if (button==RIGHTBUTTON) {
lightMouse(OFF);
setviewport(0,0,639,428,1);
floodfill(x,y,color);
setviewport(0,0,639,479,1);
lightMouse(ON);
}
else if (button==BOTHBUTTON)
break;
else moveto(x,y);
}
closegraph();
}
大家帮忙看看,那里能改进。
Top
26 楼xiaonanln(木月)回复于 2003-10-05 23:37:32 得分 0
晕,能生成EXE,但EXE运行不起来Top
27 楼tuxw(醉书生)回复于 2003-10-05 23:51:55 得分 10
随机生成100个点的坐标,然后按X坐标升序排序
moveto() (0,0), 然后依次lineto()下一点,即生成折线图(所有坐是相对于你的坐标轴的,画线时要将它转换成屏幕坐标)
要生成平滑的曲线比较麻烦,需要相关的算法Top
28 楼CanvasHat(帆布帽)回复于 2003-10-06 00:25:03 得分 5
把生成的数当成参量传到绘图函数中就行了Top
29 楼raysand(古风)回复于 2003-10-06 09:59:26 得分 10
调用图形函数。
头文件为 graphics.h
具体的操作,自己去看书很容易的
#include <graphics.h>
main()
{
int mode=VGAHI;
int driver=VGA;
int color=WHITE;
int fillcolor=WHITE;
int x,y,button,i;
initgraph(&driver, &mode, "c:\tc");
rectangle(0,429,639,479);
}
Top
30 楼LifeAndC(蓝色忧郁)回复于 2003-10-06 14:25:44 得分 0
上面的初始化不对,应该是
initgrapt ( &driver, &mode, "c:\\tc\\bgi");
楼上的,可对?Top
31 楼LifeAndC(蓝色忧郁)回复于 2003-10-06 14:26:43 得分 0
呵呵,打错了,应该是initgraphTop




