gpt4 book ai didi

c - 在位图图像中绘制类似 "from-to"

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:47 25 4
gpt4 key购买 nike

我们知道mspaint可以画成图片的直线。由于嵌套循环填充了整个区域 (x/y),我想知道这样做的方法是什么。从图像的 (x0 y0) 到所需的 x/y 画一条线。我正在使用此函数查找 bmp 的 x/y 像素:

dword find (FILE* fp, dword xp, dword yp)
{
word bpx = (3*8);
dword offset = (2+sizeof(BMP)+sizeof(DIB));
dword w = 500;

dword row = (((bpx * w) * 4) / 32);
dword pixAddress = (offset) + row * yp + ((xp * bpx) / 8);

return pixAddress;
}

我尝试了很多函数来绘制从 0x0 到 xy 的线,它们的结果很接近……但不完全。

最佳答案

byte color_pattern[] = { 255, 255, 255 };
dword xy_offset[] = {1, 1};

void bmp_lineto(dword endx, dword endy)
{
int dx = endx - xy_offset[0];
int dy = endy - xy_offset[1];
int twody = 2 * dy;
int twodxdy = 2 * (dy - dx);
int dp = twody - dx;
int X, Y, xEnd, yEnd;
FILE* fp = fopen(convert(FILENAME.text), "rb+");

if(xy_offset[0] > endx)
{
X = endx;
Y = endy;
xEnd = xy_offset[0];
}
else
{
X = xy_offset[0];
Y = xy_offset[1];
xEnd = endx;
}
while(X < xEnd)
{
X = X + 1;
if(dp < 0)
{
dp = dp + twody;
} else { Y = Y + 1; dp = dp + twodxdy;
}
fseek(fp, find(fp, X, Y), SEEK_SET);
fwrite(&color_pattern, 1, 3, fp);
}
}

但是这段代码在 bmp 上的结果是如此……不确定:bmp_lineto(200, 230); 整个图像是x500 : y460更新。 y 坐标与 x 相同。这就是问题所在

enter image description here

关于c - 在位图图像中绘制类似 "from-to",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23678754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com