可以使用SDL2(或gfx)(如
)绘制一条简单的虚线int drawDottedLine(SDL_Renderer *renderer,Sint16 x1,Sint16 y1, Sint16 x2, Sint16 y2, int r, int g, int b, int a);
在网上发现什么都没有wtf这么难?
答案 0 :(得分:1)
这是一个使用Bresenham算法的工作函数:
void DrawDottedLine(SDL_Renderer* renderer, int x0, int y0, int x1, int y1) {
int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
int dy = -abs(y1-y0), sy = y0<y1 ? 1 : -1;
int err = dx+dy, e2;
int count = 0;
while (1) {
if (count < 10) {SDL_RenderDrawPoint(renderer,x0,y0);}
if (x0==x1 && y0==y1) break;
e2 = 2*err;
if (e2 > dy) { err += dy; x0 += sx; }
if (e2 < dx) { err += dx; y0 += sy; }
count = (count + 1) % 20;
}
}
您必须认为此函数的性能很差,因为虚线的每个点都会调用SDL_RenderDrawPoint()
以便呈现。
答案 1 :(得分:0)
你可以自己简单地实现它...... 检查“Bresenham算法”以画一条线。
对于一条虚线,它只是很多全线,所以铅笔和纸张的三角学应该可以解决:)
编辑:对于虚线,你甚至没有使用“Bresenham算法”,你只需要三角法。
顺便说一句,对于那些有投票权的人,请解释一下自己?