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

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

c語(yǔ)言畫(huà)直線函數(shù),c++繪制直線

怎樣用C語(yǔ)言繪制直線

【C語(yǔ)言的用MoveTo()和LineTo()】

創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供龍口網(wǎng)站建設(shè)、龍口做網(wǎng)站、龍口網(wǎng)站設(shè)計(jì)、龍口網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、龍口企業(yè)網(wǎng)站模板建站服務(wù),十載龍口做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

#includegraphics.h

#includemath.h

/*

###############################################################################

功 能:本函數(shù)的作用是用逐點(diǎn)比較法來(lái)畫(huà)一條直線

格 式:void myline1(int x1,int y1,int x2,int y2,int color)

參數(shù)說(shuō)明:x1,y1是起始點(diǎn)坐標(biāo),x2,y2是終止點(diǎn),color是畫(huà)線的顏色

調(diào)用示例:myline1(10,20,500,440,4)

###############################################################################

*/

void myline1(int x1,int y1,int x2,int y2,int color)

{

/*變量定義開(kāi)始(2007/10/16增加)*/

int iTx; /*x軸終點(diǎn)的相對(duì)坐標(biāo)xa或臨時(shí)變量*/

int iTy; /*y軸終點(diǎn)的相對(duì)坐標(biāo)ya或臨時(shí)變量*/

int iDx; /*x軸方向的步長(zhǎng)dx*/

int iDy; /*y軸方向的步長(zhǎng)dy*/

int iFt; /*偏差Fm*/

int iSt; /*記數(shù)循環(huán)數(shù)(dx+dy)S*/

int iXt; /*x方向循環(huán)變量xm*/

int iYt; /*y方向循環(huán)變量ym*/

/*變量定義結(jié)束*/

/*變量初始化開(kāi)始*/

/*如果是第三象限或第四象限則換成第一或第二象限*/

if(y2y1)

{

iTx=x1;

x1=x2;

x2=iTx;

iTy=y1;

y1=y2;

y2=iTy;

}

iTx=x2-x1; /*取x軸的相對(duì)坐標(biāo)*/

iTy=y2-y1; /*取y軸的相對(duì)坐標(biāo)*/

iDx=1;

iDy=1;

iFt=0;

iSt=iTx+iTy;

if(iTx0)iSt=-1*iTx+iTy;; /*如果在第二象限,則x軸方向步長(zhǎng)取負(fù)值*/

iXt=0;

iYt=0;

/*變量初始化結(jié)束*/

/*數(shù)據(jù)處理開(kāi)始*/

while(iSt0)

{

putpixel(x1+iXt,y1+iYt,color);

if(iTx=0) /*如果在第一象限*/

{

if(iFt0) /*如果偏差小于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

else /*如果偏差大于或等于0*/

{

iXt+=iDx; /*x方向走一步*/

iFt-=iTy;

}

}

else

{

if(iFt0) /*如果偏差小于0*/

{

iXt-=iDx; /*負(fù)x方向走一步*/

iFt+=iTy;

}

else /*如果偏差大于或等于0*/

{

iYt+=iDy; /*y方向走一步*/

iFt+=iTx;

}

}

iSt--;

}

}

/*

###############################################################################

功 能:本函數(shù)的作用是用來(lái)畫(huà)一條直線

格 式:void myline2(int x1,int y1,int x2,int y2,int color)

參數(shù)說(shuō)明:x1,y1是起始點(diǎn)坐標(biāo),x2,y2是終止點(diǎn),color是畫(huà)線的顏色

調(diào)用示例:myline2(10,20,500,440,4)

###############################################################################

*/

int myline2(int x1,int y1,int x2,int y2,int color)

{

int iX; /*x方向的坐標(biāo)變量*/

int iY; /*y方向的坐標(biāo)變量*/

int iTx; /*x方向的步長(zhǎng)變量*/

int iTy; /*y方向的步長(zhǎng)變量*/

float fDx; /*x方向的差分變量*/

float fDy; /*y方向的差分變量*/

float fMinf; /*算法中的f*/

float fMaxF; /*算法中的F*/

float fS; /*終點(diǎn)判斷變量*/

fMinf=0.5; /*f=0.5*/

iX=x1;

iY=y1;

putpixel(x1,y1,color);

if(x1==x2y1==y2) /*如果終點(diǎn)和起始點(diǎn)相同*/

{

return(1);

}

iTx=1;

iTy=1;

fDx=(float)(x2-x1);

fDy=(float)(y2-y1);

fMaxF=fDy/fDx0?fDy/fDx:(-fDy/fDx); /*F=|dy/dx|*/

if(fDx0)iTx=-1;

if(fDy0)iTy=-1;

fS=fDx0?fDx:(-fDx);

if(fMaxF==1) /*如果F=1*/

{

iX=x1;

iY=y1;

while(fS0)

{

iX+=iTx; /*x方向走一步*/

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fS--;

}

}

else if(fMaxF1) /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iY+=iTy; /*y方向走一步*/

putpixel(iX,iY,color);

fMinf+=1/fMaxF; /*f=f+1/F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iX+=iTx; /*x方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

else /*如果F1*/

{

fS+=fDy0?fDy:(-fDy);

while(fS0)

{

iX+=iTx; /*x方向走一步*/

putpixel(iX,iY,color);

fMinf+=fMaxF; /*f=f+F*/

fS--;

if(fMinf=1) /*如果f=1*/

{

iY+=iTy; /*y方向走一步*/

fMinf--; /*f=f-1*/

putpixel(iX,iY,color);

fS--;

}

}

}

}【能夠畫(huà)出任意斜率的直線算法程序】

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;br x++;br y--;br }

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;br x++;br y++;br }

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;br pDC-SetPixel(x,y,50);br x++;br y++;br }

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;br x--;br y++;br }

pDC-SetPixel(x,y,50);

} }

}

怎么用C語(yǔ)言畫(huà)點(diǎn)和直線

這個(gè)不管怎么說(shuō)不是最開(kāi)始的控制臺(tái)的程序,這個(gè)新建工程的時(shí)候需要選擇的是Win32的程序

畫(huà)線的函數(shù)使用windows提供的API,MoveTo:移動(dòng)到起點(diǎn),LineToEx:移動(dòng)到終點(diǎn)的這兩個(gè)函數(shù),是在OnPaint,或是響應(yīng)WM_PAINT的消息的時(shí)候處理這兩個(gè)函數(shù);畫(huà)點(diǎn)的畫(huà),使用SetPixel這個(gè)函數(shù),同樣也是在WM_PAINT的消息中去處理與畫(huà)圖有關(guān)的操作的

C語(yǔ)言作一條直線

文件--新建--出來(lái)對(duì)話框在左上角選第一個(gè) 文件 --再選c++ source file-- 在右邊文件名輸入一個(gè).c格式的文件名。

或者在桌面新建一個(gè)txt文本文檔,把代碼輸進(jìn)去,重命名為.c的文件,打開(kāi)vc++6.0--文件--打開(kāi)--找到你建的那個(gè)文件路徑,

打開(kāi)后如果是中文版 --組建--組建--點(diǎn)暗紅色嘆號(hào)就可以運(yùn)行了

如果是英文版的--buid--buid--嘆號(hào)運(yùn)行

我是c語(yǔ)言初學(xué)者,老師要求設(shè)計(jì)程序用函數(shù)畫(huà)一個(gè)圓和一條直線。求各位路過(guò)的大神仗義相助。。

1??對(duì)于這種問(wèn)題,首先分析需求,

直線:

要畫(huà)直線,要的是什么,就是兩個(gè)點(diǎn);

所以定義一個(gè)結(jié)構(gòu)體

struct?point

{

int??x;

int??y;

}Ppline,Ppcircle;

畫(huà)圓:

那么需要一個(gè)圓心,和一個(gè)半徑;

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

直線函數(shù):

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

畫(huà)圓函數(shù):

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

利用C語(yǔ)言編寫(xiě) 能夠畫(huà)出任意的直線算法程序(利用畫(huà)點(diǎn)函數(shù))

上次剛寫(xiě)過(guò),在VC下運(yùn)行的,

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);

}

}

}


網(wǎng)頁(yè)題目:c語(yǔ)言畫(huà)直線函數(shù),c++繪制直線
鏈接URL:http://weahome.cn/article/hsgddo.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部