這個簡單,用MoveTo 和LineTo就行了。如有下面2個點,x(1,2),y(8,9)
成都創(chuàng)新互聯(lián)公司主營華容網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),華容h5小程序定制開發(fā)搭建,華容網(wǎng)站營銷推廣歡迎華容等地區(qū)企業(yè)咨詢
你只要MoveTo(1,2);
LineTo(8,9);
如果你是要任意輸入2個點的話,那么先將輸入的點先轉(zhuǎn)化為浮點型,用atof函數(shù),這個函數(shù)使用起來很簡單,就是把字符型轉(zhuǎn)化為浮點型。這樣就好了。
1??對于這種問題,首先分析需求,
直線:
要畫直線,要的是什么,就是兩個點;
所以定義一個結(jié)構(gòu)體
struct?point
{
int??x;
int??y;
}Ppline,Ppcircle;
畫圓:
那么需要一個圓心,和一個半徑;
圓心,通過上面的定義,可以獲得,半徑的話,直接傳遞參數(shù)就行了;
直線函數(shù):
int??paintline(Ppline??startpoint,Ppline?endpoint);
畫圓函數(shù):
int??paintcircle(Ppcircle???centerpoint,int??r);
這個不管怎么說不是最開始的控制臺的程序,這個新建工程的時候需要選擇的是Win32的程序
畫線的函數(shù)使用windows提供的API,MoveTo:移動到起點,LineToEx:移動到終點的這兩個函數(shù),是在OnPaint,或是響應(yīng)WM_PAINT的消息的時候處理這兩個函數(shù);畫點的畫,使用SetPixel這個函數(shù),同樣也是在WM_PAINT的消息中去處理與畫圖有關(guān)的操作的
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)行游標(biāo)到點(x, y)的直線。
3.void far linerel(int dx, int dy);
畫一條從現(xiàn)行游標(biāo)(x, y)到按相對增量確定的點(x+dx, y+dy)的直線。
上次剛寫過,在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);
}
}
}