问题标签 [graphics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
12164 浏览

visual-studio-2008 - 如何为 Visual C++ 2008 (Express edition) 编译 Cairo

大多数预编译的 Windows 二进制文件都是使用 MSYS+gcc 工具链制作的。它使用与 Visual C++ 2005/2008 不兼容的 MSVCRT 运行时。

那么,如何仅为 Visual C++ 编译 Cairo 1.6.4(或更高版本)。包括依赖项(png、zlib、pixman)。

0 投票
4 回答
5654 浏览

graphics - 我需要一种算法来渲染软画笔笔触

我有一组鼠标点、一个笔画宽度和一个柔软度。我可以画出柔和的圆圈和柔和的线条。我应该使用哪种算法来绘制我的点数组?我希望交叉线看起来像端点一样漂亮。

0 投票
11 回答
23951 浏览

math - 你如何计算椭圆的轴对齐边界框?

如果椭圆的长轴是垂直的或水平的,那么边界框的计算很容易,但是当椭圆旋转时呢?

到目前为止,我能想到的唯一方法是计算周边的所有点并找到最大/最小 x 和 y 值。似乎应该有一个更简单的方法。

如果有一个函数(在数学意义上)以任意角度描述椭圆,那么我可以使用它的导数来找到斜率为零或未定义的点,但我似乎找不到。

编辑:澄清一下,我需要轴对齐的边界框,即它不应该与椭圆一起旋转,而是与 x 轴保持对齐,因此转换边界框将不起作用。

0 投票
4 回答
20446 浏览

graphics - 如何使用 ImageMagick 将图标连接成单个图像?

我想在网站上使用CSS 精灵而不是单独的图像文件,用于大量相同大小的小图标。如何使用ImageMagick将它们连接(平铺)成一张大图像?

0 投票
9 回答
2278 浏览

c++ - 帮助合并向量的算法

我需要一个非常快速的算法来完成以下任务。我已经实现了几种完成它的算法,但是它们对于我需要的性能来说都太慢了。它应该足够快,以至于算法可以在现代 CPU 上每秒至少运行 100,000 次。它将在 C++ 中实现。

我正在使用跨度/范围,这是一种在一条线上具有起点和终点坐标的结构。

我有两个跨度向量(动态数组),我需要合并它们。一个向量是 src,另一个是 dst。向量按跨度起始坐标排序,跨度在一个向量内不重叠。

src 向量中的 span 必须与 dst 向量中的 span 合并,这样得到的向量仍然是排序的并且没有重叠。IE。如果在合并期间检测到重叠,则将两个跨度合并为一个。(合并两个跨度只是改变结构中的坐标的问题。)

现在,还有一个问题,src 向量中的跨度必须在合并期间“加宽”。这意味着将在 src 中每个跨度的开始坐标添加一个常量,并将另一个(更大的)常量添加到结束坐标。这意味着在 src 跨度扩大后,它们可能会重叠。


到目前为止,我得出的结论是它不能完全就地完成,需要某种临时存储。我认为它应该在线性时间超过 src 和 dst 总和的元素数量。

任何临时存储都可能在算法的多次运行之间共享。

我尝试过的两种太慢的主要方法是:

  1. 将 src 的所有元素附加到 dst,在附加之前扩展每个元素。然后运行就地排序。最后,使用“读”和“写”指针遍历结果向量,读指针在写指针之前运行,在进行时合并跨度。当所有元素都被合并(读指针到达末尾) dst 被截断。

  2. 创建一个临时工作向量。通过重复从 src 或 dst 中选择下一个元素并合并到工作向量中来进行如上所述的简单合并。完成后,将工作向量复制到 dst 并替换它。

第一种方法的问题是排序是 O((m+n)*log(m+n)) 而不是 O(m+n) 并且有一些开销。这也意味着 dst 向量必须增长得比它真正需要的大得多。

第二个主要问题是大量复制并再次分配/释放内存。

如果您认为需要,可以更改用于存储/管理跨度/向量的数据结构。

更新:忘了说数据集有多大。最常见的情况是任一向量中有 4 到 30 个元素,并且 dst 为空或 src 和 dst 中的跨度之间存在大量重叠。

0 投票
2 回答
3742 浏览

c# - 绘图和应用程序退出时如何防止 C# 中的 ObjectDisposedException

我是 CompSci 的学生,在 C# 方面相当新,我正在为一个班级做一个“约瑟夫问题”程序,我创建了一个退出按钮,它调用 Application.Exit() 随时退出,但如果 C# 仍然处理绘画并按下按钮,它会为 Graphics 对象引发 ObjectDisposedException。有什么办法可以防止这种情况吗?我在考虑 try{}catch 或更改一个布尔值来告诉绘画过程在退出之前停止,但我想知道是否有其他解决方案。

0 投票
10 回答
35740 浏览

javascript - Javascript绘图库?

对 JavaScript 交互式绘图库有什么建议吗?只需要绘制不同颜色的线条、多边形、文本。IE/Firefox/Opera/Safari 兼容。

0 投票
12 回答
39678 浏览

graphics - 如何测试线段是否与二维中的轴对齐矩形相交?

如何测试线段是否与二维中的轴对齐矩形相交?该段由其两端定义:p1,p2。矩形由左上角和右下角点定义。

0 投票
6 回答
1255 浏览

opengl - AMD 64 位双核优化

我们有一个图形密集型应用程序,它似乎在 AMD 64 位双核平台上遇到问题,而在 Intel 平台上并不明显。

运行应用程序会导致 CPU 以 100% 运行,尤其是在使用阴影和照明代码 (Open GL) 时。

有谁知道 AMD 处理器的具体问题可能导致此问题,或者知道在哪里追查问题,和/或优化代码库以避免这些问题的方法?

请注意,该应用程序通常在中档硬件上运行良好,我的开发机器有一个 nvidia gtx260 卡,所以电源不足应该不是问题

0 投票
2 回答
2108 浏览

algorithm - 在图像中混合渐变填充角的算法

我需要在图像周围放置一个 alpha 混合渐变边框。我的问题是混合角落,使它们在水平和垂直渐变相遇的地方平滑。我相信有一个标准算法可以解决这个问题。我想我什至多年前在学校遇到过它。但是我在几次网络搜索中都没有找到对其中之一的任何引用。

(我已经在角落实现了径向填充图案,但过渡仍然不够平滑。)

我的问题

  1. 如果有解决这个问题的标准算法,它的名称是什么,更好的是,它是如何实现的?

  2. 放弃任何标准算法,确定所需像素值以在角落产生平滑渐变的最佳方法是什么?(从垂直渐变平滑过渡到水平渐变。)

编辑:所以想象我有一个图像,我将插入一个更大的图像之上。较大的图像是纯黑色,较小的图像是纯白色。在我插入之前,我想通过在较小的图像上设置 alpha 值来将较小的图像混合到较大的图像中,以在它周围创建一个透明的“边框”,使其“淡入”到较大的图像中。做得正确,我应该有一个从黑色到白色的平滑渐变,除了角落和内边缘外,我在任何地方都这样做。

在靠近图像中心的渐变边框边缘,该值将是 255(不透明)。当边界接近外边缘时,alpha 值接近 0。在图像的垂直和水平边界相交的角落,你最终会得到一条对角线。我想消除那条线并平稳过渡。

我需要的是一种算法,该算法确定水平和垂直边缘相遇时在图像角落重叠的每个像素的 alpha 值(0 - 255)。