问题标签 [metafile]

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 投票
1 回答
650 浏览

c# - 2D 图形变换 - 移动原点

我有一个矢量图形格式,它的原点位于左下角,我需要将它渲染为一个增强的图元文件,它的原点位于左上角。什么是在两者之间移动而不颠倒它的变换?

0 投票
3 回答
7280 浏览

c# - c#中如何将jpg、位图格式的图片转换为矢量格式

我尝试将 jpg 图像转换为矢量格式。我尝试实现此代码,但它是通过异常

异常是:GDI+ 中发生一般错误。 请验证我的代码在哪里出错。提前致谢

0 投票
1 回答
1322 浏览

c# - Excel 如何计算复制范围“如屏幕所示”时生成的元文件的分辨率?

我有一些从http://bytes.com/topic/c-sharp/answers/572657-net-clipboard-metafiles获得的 C# 代码,它在以下两个设置下复制单元格范围:

  • 如屏幕所示,
  • 打印时如图所示

当我查看生成的图元文件的分辨率(记录为Gets the resolution, in pixels-per-inch, of this Image object)时,我会根据复制方法获得不同的值。

  • 使用打印时显示的选项,分辨率为 600,我相信这与我在 Excel 中的 DPI 设置相对应。

  • 使用As shown on screen设置,它会吐出类似Metafile.VerticalResolution = 72.08107and的内容Metafile.HorizontalResolution = 71.95952。在其他机器上,我看到这个值变化很大(值在 111、130 左右等)。

缩放级别似乎对此没有影响。根据我的观察,这些值在单台机器上保持一致,但可能因机器而异。

任何人都可以解释 Excel 在计算图元文件的分辨率时遵循的逻辑,如屏幕所示模式?

更改 Windows 分辨率并测量图元文件分辨率后,这是我生成的表(希望它看起来格式正确):

在虚拟机(同一台物理机)上运行类似过程后,结果如下。比物理机本身更不稳定。这些数据可能没有用,但我想我还是会提供它。

0 投票
1 回答
419 浏览

windows - Windows 增强型元文件笔与 Windows 元文件

我正在开发一个拥有庞大的元文件数据库(旧的 win3.0 格式)的系统,我需要将其转换为增强的元文件。我确实转换了整个数据库,并设法将文件按原样播放到显示器上,除了一件事:

  • 旧的元文件使用当前的笔/画笔将文件播放到屏幕上。

  • 另一方面,增强的元文件需要将笔“保存”
    在文件中,而我没有设法在运行时更改它。

我需要一种在运行时更改增强的图元文件笔的方法,因此可以根据运行的应用程序在不同的笔中播放一个图元文件。

0 投票
0 回答
844 浏览

c# - 将文本添加到图元文件时,字母字体会更改

我想向元文件添加一些文本。
我使用的代码:

新元文件 ( 2.emf ) 中的字母比原始 emf 文件更粗体。此外,新元文件的大小至少是原始文件的两倍。我究竟做错了什么?

编辑:原始 emf 文件 ( 1.emf ) 是从 emf 假脱机文件创建的,文本位于ExtTextOutWandExtTextOutA记录中。

0 投票
0 回答
229 浏览

c# - 使用 C# 提取/转换 WMF

我有一堆二进制文件,其中似乎嵌入了 Windows 元文件:

{\pict\wmetafile8\picw9031\pich827\picwgoal5119\pi chgoal468 010009000003F901000005001C0000000000050000000B0200 000000050000000C023B03472303 0000001E00030000001E00050000000C02D501001405000000 0B020000000008000000FA020000 0000000000000000040000002D0100001C000000FB0238FF00 0000000000900100000001070000 00417269616C00F47740000000440E0A440786F5771086F577 0100000000003000040000002D01 010005000000020101000000050000000102FFFFFF00050000 002E011800000005000000090200 blah blah blah }

有没有办法用 C# 将我正在查看的内容转换回图像?

0 投票
2 回答
2532 浏览

delphi - 如何在 TMetaFileCanvas 上透明地绘制 PNG

我需要将 PNG 透明地绘制到 MetaFileCanvas 上。这在我绘制位图(在屏幕上显示时使用)时效果很好,但对于打印我需要一个 MetaFile。我怎样才能做到这一点?

这是一些演示问题的代码。将附加的 PNG 放在某处并更新代码中的路径。

带有透明区域的示例图片

0 投票
3 回答
1883 浏览

gdi+ - 在 EnumEnhMetaFile 解析期间从 Windows EMF 中提取图像?

我正在修改的程序将 EMF 文件转换为不同的格式 (SVG)。它使用 EnumEnhMetaFile() 执行此操作,该函数为 EMF 的每条记录调用程序的解析例程。这对矢量素材非常有用。但是,它还需要能够在遇到 EMR_STRETCHDIBITS 时拉出位图。(最终目标实际上是一个 base64 编码的 PNG,但症结在于抓取位图。)微软是否在某个地方提供了一个函数来提取图像?向 EMF 添加位图的逆操作是 abitmap.Draw,我需要的是某种 abitmap.Read,它可以在 EnumEnhMetaFile 数据处理中进行操作。

是否有将 EMR_STRETCHDIBITS 提供的数据偏移字段转换为 Windows 位图的函数?请注意,我不想将 EMF 渲染为位图,我想要存储在 EMF 中的原始位图。

谢谢。

0 投票
2 回答
9211 浏览

c# - 如何显示 Windows 元文件?

我需要使用 WPF 显示Windows 图元文件(EMF),我该怎么做?

编辑:

我会保持图像矢量为基础。

0 投票
1 回答
366 浏览

delphi - 德尔福、二维码、WMF

我得到了一份“新工作”来使用 QR 过滤器“归档”一些数据。

当数据结构修改并保存到数据库时,我们使用 WMF 过滤器开始“静默打印”,我捕获文件,并将它们全部存储在日志记录中,在数据库 BLOB 中。

一切都很好,但后来他们需要避免重复相同的报告。

我们禁用了“时间戳 QR 字段”,但记录重复了。

我在数据库中放入了一些 CRC,并从页面数据 (WMF) 中计算出来。

有趣的是,当我退出程序时,新生成的 WMF 发生了变化——因此 CRC 也发生了变化。

我认为这是由 QR 引起的,然后我用一个简单的 Delphi 程序进行了检查:

当我重新启动应用程序时,新的 wmf 文件与以前的不同。

我认为我解决了将 wmf 拉伸到 bmp.Canvas 中的问题,但这减慢了日志记录,因为每个 bmp 都是 4 MB,并且有 10 个页面我必须在 4 * 10 MB 上进行 CRC ...(WMF每页只有 85-100 KB,而 4 MB 位图)

所以我正在寻找一些可以在 WMF 上计算 CRC 的简单方法,也许如果我可以完全拆分 WMF 标头,那么我就可以解决这个问题......我现在不知道。

你有什么想法吗?请告诉我!

谢谢。