真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

畫一條直線的函數(shù)c語言 c++畫線函數(shù)

我是c語言初學者,老師要求設計程序用函數(shù)畫一個圓和一條直線。求各位路過的大神仗義相助。。

1??對于這種問題,首先分析需求,

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為杞縣等服務建站,杞縣等地企業(yè),進行企業(yè)商務咨詢服務。為杞縣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

直線:

要畫直線,要的是什么,就是兩個點;

所以定義一個結構體

struct?point

{

int??x;

int??y;

}Ppline,Ppcircle;

畫圓:

那么需要一個圓心,和一個半徑;

圓心,通過上面的定義,可以獲得,半徑的話,直接傳遞參數(shù)就行了;

直線函數(shù):

int??paintline(Ppline??startpoint,Ppline?endpoint);

畫圓函數(shù):

int??paintcircle(Ppcircle???centerpoint,int??r);

利用C語言編寫 能夠畫出任意的直線算法程序(利用畫點函數(shù))

上次剛寫過,在VC下運行的,

int dx,dy,incrE,incrNE,d,x,y;

if ((point[1].x-point[0].x)==0){ //垂直的直線

x=point[0].x;

for(y=point[0].y;ypoint[1].y;y++)

pDC-SetPixel(x,y,50);

}

else if(abs((point[1].y-point[0].y)/(point[1].x-point[0].x))=1){ //斜率 -1到 1 之間

dx=point[1].x-point[0].x;

dy=point[0].y-point[1].y;

d=dx-2*dy;

incrE=-2*dy;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

if(point[0].ypoint[1].y){

while(xpoint[1].x)

{

if(d=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y--;

}

pDC-SetPixel(x,y,50);

}

}

else if(point[0].y=point[1].y){

dy=point[1].y-point[0].y;

incrE=-2*dy;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(xpoint[1].x)

{

if(d=0){

d+=incrE;

x++;

}

else

{d+=incrNE;

x++;

y++;

}

pDC-SetPixel(x,y,50);

}

}

}

else { //斜率 -1 和 1的直線

if(point[1].x=point[0].x){

dx=point[1].x-point[0].x;

dy=point[1].y-point[0].y;

d=2*dx-dy;

incrE=2*dx;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(xpoint[1].x)

{

if(d0){

d+=incrE;

y++;

}

else

{d+=incrNE;

pDC-SetPixel(x,y,50);

x++;

y++;

}

pDC-SetPixel(x,y,50);

}

}

else if((point[1].y-point[0].y)/(point[1].x-point[0].x)-1){

dx=point[1].x-point[0].x;

dy=point[0].y-point[1].y;

d=2*dx-dy;

incrE=2*dx;

incrNE=2*(dx-dy);

x=point[0].x,y=point[0].y;

pDC-SetPixel(x,y,50);

while(ypoint[1].y)

{

if(d0){

d+=incrE;

y++;

}

else

{d+=incrNE;

x--;

y++;

}

pDC-SetPixel(x,y,50);

}

}

}

c++如何畫直線?

包含windows.h,里面有一個SetPixel方法,畫線常用算法有三種dda,中點畫線Bresenham畫線-_-

剛把三種都寫了下

void?CDDALineView::drawDDALine(CDC?*pDC,?int?x0,?int?y0,?int?x1,?int?y1,?COLORREF?color)

{

float?deltax,?deltay,?x,?y;

int?steps?=?max(abs(x1?-?x0),?abs(y1?-?y0));

deltax?=?(x1?-?x0)?/?steps;

deltay?=?(y1?-?y0)?/?steps;

x?=?x0;

y?=?y0;

pDC-SetPixel((int)(x?+?0.5)?,?(int)(y?+?0.5),?color);

for(int?i?=?0;?i??steps;?i++)

{

x?+=?deltax;

y?+=?deltay;

pDC-SetPixel((int)(x?+?0.5),?(int)(y?+?0.5),?color);

}

}

//preCondition:x0??x1

void?CDDALineView::MidpointLine(CDC?*pDC,?int?x0,?int?y0,?int?x1,?int?y1,?COLORREF?color)

{

int?a?=?y0?-?y1;

int?b?=?x1?-?x0;

int?c?=?x0?*?y1?-?x1?*?y0;

float?d,?d1,?d2;

d?=?2?*?a?+?b;

d1?=?2?*?a;

d2?=?2?*?(a?+?b);

int?x?=?x0,?y?=?y0;

pDC-SetPixel(x,?y,?color);

while(x??x1)

{

if(d??0)

{

?x++;

?y++;

?d+=d2;

}

else{

x++;?

d+=d1;

}

pDC-SetPixel(x,?y,?color);

}

}

void?CDDALineView::BresenhamLine(CDC?*pDC,?int?x0,?int?y0,?int?x1,?int?y1,?COLORREF?color)

{

int?x,?y,?dx,?dy;

dx?=?x1?-?x0;

dy?=?y1?-?y0;

float?k?=?dy?/?dx;

x?=?x0;

y?=?y0;

float?e?=?-0.5;

for(int?i?=?0;?i?=?dx;?i++)

{

pDC-SetPixel(x,?y,?color);

x++;

e+=k;

if(e?=?0)

{

y++;

e-=1;

}

}

}

僅供參考

怎么用C語言畫點和直線

這個不管怎么說不是最開始的控制臺的程序,這個新建工程的時候需要選擇的是Win32的程序

畫線的函數(shù)使用windows提供的API,MoveTo:移動到起點,LineToEx:移動到終點的這兩個函數(shù),是在OnPaint,或是響應WM_PAINT的消息的時候處理這兩個函數(shù);畫點的畫,使用SetPixel這個函數(shù),同樣也是在WM_PAINT的消息中去處理與畫圖有關的操作的

怎樣用C語言繪制直線

1.void far line(int x0, int y0, int x1, int y1);

畫一條從點(x0, y0)到(x1, y1)的直線。

2.void far lineto(int x, int y);

畫一作從現(xiàn)行游標到點(x, y)的直線。

3.void far linerel(int dx, int dy);

畫一條從現(xiàn)行游標(x, y)到按相對增量確定的點(x+dx, y+dy)的直線。


網(wǎng)站欄目:畫一條直線的函數(shù)c語言 c++畫線函數(shù)
當前路徑:http://weahome.cn/article/hgpdhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部