![]() |
1
10
我认为最好的方法是画一个矩形而不是一条线,因为一条宽的线是一个二维物体。为了避免透支(减少写带宽)和欠原始(丢失像素)而绘制一组平行线的字符串会非常复杂。从起点、终点和宽度计算矩形的角点并不难。 因此,按照下面的注释,这样做的过程是:
注*:如果您使用的是OpenGL,那么您也可以同时执行步骤2。当然,使用OpenGL确实意味着要理解OpenGL(大而复杂),而且这个应用程序可能会使它在开发的如此后期实现成为一件棘手的事情。 |
![]() |
2
17
取另一个Bresenham环,用它来修改原直线在矩形方向的起始和结束位置。 问题是要有效地找到正确的起点,并且在绘制下一行时不要两次绘制任何像素(或跳过一个像素)。 工作和测试的C代码可从Github获得 C code . 这里是一个测试页,包含一些由该代码创建的示例行。 黑色像素是算法的起点。
|
![]() |
3
9
这里是一个 paper and Delphi implementation 一个修改版的布雷森汉姆算法绘制加厚线。 你也可以看看 Anti-Grain Geometry 一个高质量和高性能的二维图形软件渲染库。看看 demo page 了解它能做什么。 |
![]() |
4
7
为了获得最佳的精度,而且对于较粗的线也有良好的性能,尤其是可以将线绘制为多边形。一些伪代码:
可以选择在每个端点画一个圆。 |
![]() |
5
4
一些简单的使用路径:
|
![]() |
6
2
我假设您将绘制从一条边界线到另一条边界线的水平跨度,并在进行(在单个循环中)时使用Bresenham方法计算每一条线的X值。 还没试过。 终点可能需要一些注意,以免看起来很奇怪。 |
![]() |
7
1
http://members.chello.at/~easyfilter/bresenham.html 这个链接底部的例子是javascript,但是应该很容易适应C语言。这是一个相当简单的反锯齿算法,可以绘制不同厚度的线条。 |
![]() |
8
1
我经常这样做来生成多孔介质模拟中纤维和球体的图像。我有一个很好的简单方法,使用一种非常标准的图像分析技术,叫做“距离变换”。这需要访问一些图像分析包。我把python和scipy结合使用,所以这没问题。下面是一个将随机分布的点转换为球体的演示:
就这样!对于非常大的图像,距离变换可能会很慢,但有一些有效的版本。例如,imagej有一个平行化的。显然,要创建厚纤维,只需创建薄纤维的图像,然后应用上面的步骤2和3。 |
![]() |
9
0
对于我的嵌入式热敏打印机应用程序,使用Bresenham的算法,这条线太细了。我没有GL或任何花哨的东西。最后,我简单地减小了y值,在第一个值下面画了更多的线。每增加一行厚度。非常快速的实现和制作所需的结果打印从单色位图到热。 |
|
Vojtjikjhh -4K- · 绘制光标问题 1 年前 |
![]() |
FoolishMortal · 无法显示从基64字符串解码的特定图像 1 年前 |
![]() |
Dromlius · JPanel透支重叠的JComcoBox 1 年前 |
|
mathInferno · 另一个OpenGL纹理未渲染后 1 年前 |
|
Pierro · 当我运行一个简单的SFML代码时,为什么像素会失真? 1 年前 |
![]() |
Unknown · Were我能找到游戏横幅psd文件吗[关闭] 1 年前 |
|
se-tima · 如何绘制微生物学结果图(生长曲线)? 2 年前 |
![]() |
user1944491 · 如何在静态基线上绘制SwiftUI矩形? 2 年前 |