0

我正在学习 C,我得到了这段代码,它绘制了一行像素:

void draw_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2) {
// Insert algorithm here.
if (x1 == x2) {
    //Draw Horizontal line
    unsigned char i;
    for (i = y1; i <= y2; i++){
        set_pixel(x1, i, 1);
    }           
} else if (y1 == y2){
    //Draw vertical line
    unsigned char i;
    for (i = x1; i <= x2; i++){
        set_pixel(i, y1, 1);
    }       

我了解它是如何工作的,但不了解如何实现它。有人可以提供一个如何使用它的例子吗?

4

1 回答 1

0

希望这对您有所帮助:

算法:
1)获取线的起点和终点的 X 和 Y 坐标。
2) 找出 X 和 Y 坐标值的差异为 dx 和 dy。
3)检查 dx 是否大于 dy 是否更大,并将更大的值分配给“steps”。
4)通过将相应的轴差除以步长,定期增加X和Y值。
5)使用“PUTPIXEL”语法绘制初始点。
6)重复第4步'steps'次数并使用“PUTPIXEL”语法标记终点。
7) 结束程序。

程序:
#include"graphics.h" 
#include"stdio.h"
#include"conio.h"
#include"math.h"
void linedraw(int,int,int,int);
int main()
{
int x1coeff,y1coeff,x2coeff,y2coeff;
printf("\输入起点的 x 和 y 值:");
scanf("%d%d",&x1coeff,&y1coeff);
printf("\输入终点的 x 和 y 值:");
scanf("%d%d",&x2coeff,&y2coeff);
画线(x1coeff,y1coeff,x2coeff,y2coeff);
getch();
返回0;
}
void linedraw(int xa,int ya,int xb,int yb)
{
int dx,dy,steps,k;
int gdriver=检测,gmode;
浮动 xinc,yinc,x,y;
initgraph(&gdriver,&gmode,""); //初始化图形
dx=xb-xa;
dy=yb-ya;
x=xa;
y=ya;
如果(abs(dx)>abs(dy))
{
步骤=abs(dx);
}
其他
{
步骤=abs(dy);
}
xinc=dx/步;
yinc=dy/步;
putpixel(x,y,白色);
for(k=0;k {
x+=xinc;
y+=yinc;
putpixel(x,y,白色);
}}
输出:
输入起点的 x 和 y 值:100 100
输入终点的 x 和 y 值:200 200
绘制的线是

在此处输入图像描述

于 2015-04-26T04:46:45.477 回答