c语言画弧
⑴ c语言画弧线
PolyBezier
● 说明
此函数用于画贝赛尔样条曲线。贝赛尔样条是一种非常优美的曲线,广泛应用于计算机图形学中。函数PolyBezier和PolyBezierTo用于绘制这种样条曲线。一条贝赛尔样条由4个定义点定义:两个端点和两个控制点。
● 原型
BOOL PolyBezier(HDC hdc, CONST POINT *lppt, DWORD cPoints);
● 参数
hdc:指定的设备环境句柄。
lppt:POINT结构数组的指针,包括了样条端点和控制点的坐标,其顺序是起点的坐标、起点的控制点的坐标、终点的控制点的坐标和终点的坐标。
cPoints:指明数组中的点的个数。
● 返回值
若函数调用成功,则返回非零,否则返回零。
⑵ c语言画椭圆
#include <graphics.h>
...
/**
* x,y 圆心坐标,xradius,yradius 椭圆x,y方向的半径 ,*start,end圆弧起点和终点角度,单位为度
*/
void far ellipse(int x, int y, int start,int end,int xradius, int yradius);
/**
* x,y为要填充区域内任意坐标, border填充区域边界颜色
*/
void far floodfill(int x, int y, int border);
⑶ 能给个画圆或者画圆弧的C程序吗讲一下思路原理也可以,谢谢啦
这是我做过的,你试试
#include<stdio.h>
#include<graphics.h>
#define PATH "c:\\TC30\\BGI"
int x0,y0;
void Bresenham_Circle(int r,int color)
{
int x,y,delta,delta1,delta2,direction;
x=0;
y=r;
delta=2*(1-r);
while(y>=0)
{
putpixel(x+x0,y+y0,color);
putpixel(x0-x,y0-y,color);
putpixel(x0-x,y+y0,color);
putpixel(x+x0,y0-y,color);
if(delta<0)
{
delta1=2*(delta+y)-1;
if(delta1<=0)
direction=1;
else
direction=2;
}
else
{
if(delta>0)
{
delta2=2*(delta-x)-1;
if(delta2<=0)
direction=2;
else
direction=3;
}
else
direction=2;
}
switch(direction)
{
case 1:x++;
delta+=2*x+1;
break;
case 2:x++;
y--;
delta+=2*(x-y+1);
break;
case 3:y--;
delta+=(-2*y+1);
break;
}
}
}
int main()
{
int a,b;
int r,color;
// scanf("%d%d%d%d%d%d",&x0,&y0,&x1,&y1,&color);
a=VGA;
b=VGAHI;
initgraph(&a,&b,PATH);
setbkcolor(24);
setcolor(15);
x0=200;
y0=200;
r=180;
color=10;
Bresenham_Circle(r,color);
getch();
return 1;
}
⑷ 怎么用C语言画圆弧,还有就是怎么让一个圆做曲线运动
用C语言画圆弧将系统初
始化成画图状态(默认的是文字状态).然后库函数个画圆的函数,该函数有专4个参数:圆心的位置属,半径的长度,圆弧的起始角的大小(以水平面为0度,下同)以及圆弧的终止角的大小.根据需要就可以画出各种圆弧了
!
⑸ C++/C语言 画一个圆(带宽度的圆弧)
MFC里面画点是dc.pixel(point)
//这里的point是你设置ClickButtonDown或者ClickButtonUp里面返回的CPoint类型的值,如果是画线的话,调用moveto()函数到直线的起点,然后lineto函数到终点
;如果你要画圆的话用Ellipse()函数,ellipse(CRect());
CRect是一个类型的变量,你需要用两个点来构造一个CRect
⑹ c语言绘制余弦曲线,请给出详细的注释
数字62是 2π(3.1415926)*10 的近似值,这下该明白了吧。也就是说y变量控制着*所在第几行,而x变量控制着*在每行中的应该出现的位置。
呵呵,原理是这样的,这是一个用*来描绘余弦曲线的程序,而我们知道printf在输出的时候如果不指定位置,他是默认从左到右输出,当加了\n控制符时,他会换行下一行仍是从左到右输出,而模拟余弦曲线时为了让*在该出现的位置出现我们必须控制printf函数输出*的位置那么什么也不出也不行,只能用printf输出“空格”,而空格是看不见的,能达到同样效果。这样在每行,没有曲线的位置输出的是空格而有曲线的位置就输出了*。最后所有行的*就组成了余弦曲线。
如下所示(字母V,有*的每行中*的前面是有空格的):
* *
* *
* *
*
⑺ VC++中Arc函数画圆弧
BOOL Arc(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
(x1,y1)指定外接矩形左上角坐标,
(x2,y2)指定外接矩形右下角坐标。
(x3,y3)是起始点,不一定在圆弧上。
(x4,y4)是结束,不一定在圆弧上。
注意:画一条椭圆弧,是画的这个外接矩形定义的一段椭圆弧,这个弧的起点是从外接矩形中心到起始点(x3,y3)的线与椭圆的交点。
这个弧的末点是从外接矩形中心到结束点(x4,y4)的线与椭圆的交点。
还有一种声明
BOOL Arc(LPCRECT lpRect,POINT ptStart,POINT PtEnd);
意思和上面相似。
lpRect指定外接矩形,ptStart是起始点,一样不一定在弧上,PtEnd是末点,一样不一定在弧上。
⑻ C语言出错画圆和圆弧
#include"graphics.h"
#include<stdio.h>
main()
{
intdrive,mode;
drive=DETECT;//必须大写。
initgraph(&drive,&mode,"c:\tc30\bgi");
circle(150,100,80);
circle(120,80,15);
cricle(180,80,15);
line(145,105,140,125);
line(155,105,160,125);
line(140,125,160,125);
arc(150,80,235,305,60);
arc(150,110,210,330,40);
getch();
closegraph();
}
依然不推荐用tc画图... 太过时专了 没什么属意义
⑼ C语言绘制圆弧算法
可以搜索 中点画圆法
⑽ C语言画圆的格式是DrawFillCircle(x,y,1,color),问画圆弧的格式是什么
用arc() 可画圆弧
功能: 函数arc()使用当前绘图色并以实线画一圆弧。
用法: 函数调内用方式为void arc(int x,int y,int startangle,int endangle,int radius);
说明: 参数x,y为圆心容坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同往常一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别为起始角和终止角可画出相同的弧。大于360度可作为参数,它将被化到0度 ̄360度范围里。函数arc()能画封闭圆,只要取起始角为0度,终止角为360度即可。此函数中,屏显纵横比可自动调节。