问题标签 [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 投票
17 回答
10280 浏览

graphics - 小型网站图片的格式是什么?GIF 还是 PNG?

在为网站做小图标、标题图形等时,使用 GIF 或 PNG 更好吗?

显然,如果需要透明效果,那么 PNG 肯定是要走的路,对于更大、更多照片的图像,我会使用 JPEG——但对于普通的网络“家具”,你会推荐哪种方式,为什么?它可能只是我正在使用的工具,但 GIF 文件通常似乎比可比较的 PNG 小一些,但使用它们似乎只是 1987 年。

0 投票
11 回答
4572 浏览

pdf - 从结构化数据生成 PDF

我希望能够从我可能在数据库或 xml 或任何其他结构化形式中的数据中生成高度图形化(也包含大量文本内容)的 PDF 文件。

目前,我们的平面设计师在将内容获取为 MS Word 文档后,在 Photoshop 中手动创建这些 PDF 文件。但通常,内容有20多个修改;这里和那里的小改动,拼写更正等。

两个缺点是: 1) 平面设计师的时间被不必要地占用。第一个版本是他/她唯一需要处理的版本。2) PDF 文件变成了现在有最终修改内容的文档,而初始内容与它不同步。因此,如果初始内容需要在其他地方(例如网站上),我们需要从 PDF 文件重新创建它。

生成 PDF 文件将帮助我解决这两个问题。也许图形设计师创建“模板”然后放入标签/持有者并将这些标签/持有者映射到相关数据的某种方式。

谢谢 :-)

0 投票
1 回答
1036 浏览

c++ - Win32下如何初始化Pango?

从 GTK+ 项目的 Win32 下载页面下载 Pango 和 GLib并在 Visual Studio 2005 下创建和配置了一个 Win32 项目,使其指向正确的包含目录,如何初始化 Pango 以渲染到 Win32 窗口?

第一个电话应该是pango_win32_get_context()吗?调用该函数会导致应用程序挂起该调用,因为该函数永远不会返回。

第一个电话应该是什么?还需要哪些其他调用来为 Win32 初始化 Pango 并呈现简单的文本字符串?是否有在线可用的示例在 Win32 下使用 Pango 进行渲染?

0 投票
3 回答
3078 浏览

python - 我的 snap to grid 代码有什么问题?

首先,我很确定捕捉到网格相当容易,但是在这种情况下我遇到了一些奇怪的麻烦,而且我的数学太弱,无法具体找出问题所在。

这是情况

我有一个网格的抽象概念,Y 步完全分开 Y_STEP(x 步工作正常,所以暂时忽略它们)

网格在一个抽象的坐标空间中,为了让东西对齐,我在里面有一个神奇的偏移量,我们称之为 Y_OFFSET

捕捉到网格我有以下代码(python)

所以我将光标位置、Y_OFFSET 和 Y_STEP 传递给该函数,它返回网格上最近的地板 y 位置

这在原始场景中似乎工作正常,但是当我考虑到视图是可滚动的事实时,事情变得有点奇怪。

滚动是尽可能基本的,我有一个视口,可以计算沿 Y 轴滚动的距离,并抵消通过它的所有内容。

这是光标的 mouseMotion 代码片段:

所以这里有两件事要看,首先是 Scroll 模块从像素位置到抽象坐标空间的转换,然后是工具的 positionChanged 函数,它获取抽象坐标空间值并捕捉到最近的 Y 步长。

这是相关的滚动代码

工具更新代码

最后一个相关的块是工具去渲染自己的时候。它通过 Scroll 对象,该对象将工具的捕捉坐标空间位置转换为屏幕上的像素位置,代码如下:

唷,这是一个很长的解释。希望你还在我身边...

我现在遇到的问题是,当我向上滚动时,绘制的图像会与光标失去对齐。
它开始捕捉到光标下方恰好 1 步的 Y 步。此外,它似乎逐步进入和退出联盟。
在某些卷轴上它是 1,而在其他卷轴上它是正确的。
它永远不会超过 1,并且总是捕捉到有效的网格位置。

我能想到的最好的猜测是,我在错误的地方截断了一些数据,但不知道它在哪里或如何以这种行为结束。

任何熟悉坐标空间、滚动和捕捉的人?

0 投票
5 回答
1586 浏览

.net - 如何更新不同线程中的组件?.NET CF

我正在编写一个在 PDA 上显示地图的 .NET Compact Framework 应用程序。

我已经创建了一个临时组件,它可以绘制它自己的整个地图,使用其中的几个组件来组成大图。我这样做是为了避免一步绘制整个地图的延迟。

我现在想做的是在他们自己的线程中绘制这些片段,因此地图看起来会作为一个实体增长,并且(同样,更重要的是)避免冻结用户界面的其余部分。

正确知道地图的每一块都是在其 onPaint 方法中绘制的。我的想法是,以某种方式告诉系统“请在线程中执行此代码”。

就像是:

你知道怎么做吗?还是我的方法完全错误?

谢谢你的时间!

0 投票
3 回答
3625 浏览

math - 任意旋转中两条抛物线相交的代码或公式

我正在研究一个几何问题,该问题需要在任何旋转中找到两个抛物线弧的交点。我能够通过旋转平面以将弧与轴对齐来对直线和抛物线进行交叉,但两条抛物线不能同时与轴对齐。我正在推导公式,但我想知道是否有可用的资源。

0 投票
4 回答
28105 浏览

algorithm - 你如何在给定的垂直距离上找到一个点?

我在窗口中画了一条线,让用户拖动它。所以,我的线由两点定义:(x1,y1) 和 (x2,y2)。但现在我想在我的线的末端画“帽子”,即在我的每个端点处画短垂直线。大写字母的长度应为 N 个像素。

因此,要在端点 (x1,y1) 处绘制我的“帽”线,我需要找到两个点,它们形成一条垂直线,并且每个点距点 (x1,y1) 的距离为 N/2 像素。

那么如何计算一个点 (x3,y3),因为它需要与已知线的终点 (x1,y1) 相距 N/2 的垂直距离,即由 (x1,y1) 定义的线和(x2,y2)?

0 投票
13 回答
398037 浏览

python - 如何在 Python 中读取给定像素的 RGB 值?

如果我打开一个图像open("image.jpg"),假设我有像素的坐标,我如何获得像素的 RGB 值?

那么,我该如何做相反的事情呢?从一个空白图形开始,“写”一个具有特定 RGB 值的像素?

如果我不必下载任何其他库,我会更喜欢。

0 投票
5 回答
21159 浏览

java - 如何在 Java 中编写全屏模式?

我希望我的应用程序具有全屏模式。执行此操作的最简单方法是什么,我需要为此使用第三方库还是 JDK 中已经提供了此功能?

0 投票
5 回答
2160 浏览

windows - GDI 已经加速。有谁知道这是什么时候发生的?

勾勒出这个问题的背景:在工作中,我们使用 Dell Precision 工作站。我目前有一台 NVidia Quadro FX1700。我的团队正在为实时数据采集系统开发图形组件。因此,我们一直在寻找图形操作是否不会占用太多 CPU 时间。为了快速检查,我们运行了几个测试程序,它们以指定的速率(例如 10 fps)绘制场景,并且我们使用普通的旧任务管理器来查看 CPU 使用率在哪里。其中一个程序对 GDI DrawRectangle 调用(已填充)很重。这个程序过去总是消耗大约 40% 的 CPU 用户时间,但大约一年左右(这里只是猜测)它只使用大约 2-3% 的内核时间。很明显,这里正在进行一些硬件加速。事实上,如果我关闭 HW-accell,我们' 重新回到原来的 40% 的用户时间。所有这些当然都是好消息,因为我们已经在考虑使用 OpenGL。年复一年,GDI 从未从硬件加速中受益。直到前一段时间。

有人知道更多吗?微软这样做了吗?还是 gfx 卡供应商特定的?

编辑

Thnx 已经给出了答案(Ferrucio、Torlack 和 Rob Walker),但我的问题尚未得到解答。我们在这里讨论的是填充矩形。可能是最简单的优化功能:只需将几个坐标发送到 GPU 并让它撕裂。然而,它总是在 CPU 端实现。到目前为止,答案让我相信 NVidia 终于看到了曙光(经过 10 多年)并加速了 GDI。并且没有关于这个的公告?根本找不到这方面的信息。我的内部客户问我有关图形加速的问题,我只能说“好吧,我们很幸运”。

编辑2

It does seem like it is driver related according to the different answers. So, then NVidia has made crappy GDI drivers for its workstation cards for years. It really was an accepted fact within this company that GDI was not accelerated and all the tests confirmed this.