lineto(x, y)、linerel(dx, dy)、arc 等從當前點開始繪製。moveto(x, y):將當前點**移動**到絕對坐標 (x, y),**不畫線**。moverel(dx, dy):相對移動當前點。(0, 0) (圖形模式原點,通常屏幕左上角)。lineto 自然從原點畫。moveto(100,100); lineto(100,100); 畫長度 0 線段。initgraph 失敗,繪圖函數無效。#include <graphics.h>
#include <conio.h>
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, ""); // 初始化繪圖模式
if (graphresult() != grOk) return 1;
moveto(100, 100); // 1. 移動筆到起點 (不畫線)
lineto(300, 200); // 2. 從當前點畫線到終點
// 此時 CP 更新為 (300, 200)
lineto(400, 100); // 3. 從 (300,200) 續畫到 (400,100)
getch();
closegraph();
return 0;
}
| 函數 | 作用 | CP 變化 |
|---|---|---|
moveto(x,y) | 移動筆 (提筆) | 設為 (x,y) |
lineto(x,y) | 從 CP 畫線到 (x,y) | 更新為 (x,y) |
moverel(dx,dy) | 相對移動筆 | CP += (dx,dy) |
linerel(dx,dy) | 從 CP 相對畫線 | CP += (dx,dy) |
getx()/gety() | 獲取當前 CP 坐標 | 不變 |
graphics.h (BGI) 非標準、已棄用。現代圖形編程推薦:
SDL_RenderDrawLine(renderer, x1, y1, x2, y2) 直接指定端點,無 CP 概念。sf::Vertex line[] = { {x1,y1}, {x2,y2} }; window.draw(line, 2, sf::Lines);DrawLine(x1, y1, x2, y2, RED);算法邏輯 (如 Bresenham 畫線、中點畫圓) 通用,只需適配繪圖 API。