1??對(duì)于這種問(wèn)題,首先分析需求,
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),雞東企業(yè)網(wǎng)站建設(shè),雞東品牌網(wǎng)站建設(shè),網(wǎng)站定制,雞東網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,雞東網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
直線:
要畫(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);
首先設(shè)置初始坐標(biāo)和結(jié)束坐標(biāo),然后設(shè)定畫(huà)線顏色,最后用draw函數(shù)畫(huà)出來(lái)就好了
在c的標(biāo)準(zhǔn)庫(kù)中有g(shù)raphic.h頭文件,實(shí)現(xiàn)了很多畫(huà)圖函數(shù) 比如 lineto, moveto, arc,(函數(shù)名可能記錯(cuò),好久沒(méi)用了-.-!)
直線:起點(diǎn)加終點(diǎn)就行。
二次曲線,比如拋物線,那就以定長(zhǎng)拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長(zhǎng)拆分,估計(jì)很難計(jì)算。要是精度要求不高就根據(jù)情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的算法或者雙圓弧擬合曲線的算法。
這個(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)的操作的
1、通過(guò)一些點(diǎn)擬合出一條直線。
2、參數(shù):pt_input指向傳入的點(diǎn)的指針。
3、ptNumbers傳入的點(diǎn)數(shù)量。
4、k指向擬合直線參數(shù)k的指針。
5、b指向擬合直線參數(shù)b的指針。
上次剛寫(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);
}
}
}
新聞名稱:c語(yǔ)言怎么用函數(shù)表達(dá)直線 c語(yǔ)言畫(huà)一條直線
網(wǎng)頁(yè)鏈接:http://chinadenli.net/article28/dodijjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、做網(wǎng)站、App設(shè)計(jì)、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)