问题标签 [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.
grayscale - 如何对 emf 图像进行灰度化
使用 C# 和 Visual Studio 2010,我如何从彩色的 emf 中制作灰度 emf?我应该枚举记录并以某种方式更改颜色设置吗?
因此,我想要一个新的 emf 图像。
c++ - C++ 创建增强的元文件会导致一个空文件
我正在尝试像这样创建一个增强的元文件:
在这里拿了代码
最后我得到的只是一些带有奇怪编码名称的0字节非扩展文件,就像整灭攮晭一样。
可能是什么问题?
PS 另外,我在混合模式应用程序中调用它,从 c# 到 c++/cli 对象。
编辑奇怪编码的问题已解决,但创建的文件仍然是 0 字节长度。如何解决?
mfc - 如何在具有透明背景的 CDC 上渲染 CRichEditCtrl?(MFC)
我需要帮助以在屏幕上显示和打印的图形上下文上呈现具有透明背景的 CRichEditCtrl 内容。现在我有以下代码,除了透明度问题外,它运行良好:
我需要以透明方式渲染此文本,因为我的 DC 上已经绘制了一些东西。我试图在网上搜索有关元文件和透明度的任何帮助,但没有找到足够的帮助。我会感谢任何形式的帮助。
delphi - 是否可以旋转元文件图像而不将其转换为位图?
我需要将 TMetafile 图像旋转至少 90 度。通过在位图画布上绘制我的图元文件然后旋转位图来旋转它很容易,但我更愿意将其保留为矢量图像格式。这可能吗?如果是,那我该怎么做?
c# - 调用 GetHenhmetafile() 时出现“参数无效”,试图将内存中的 Graphics 对象保存为 EMF
在过去的两周里,我一直在徒劳地寻找这个问题的答案,但我很困惑。
我正在使用一些代码,这些代码从由元文件构造的 Graphics 对象创建示例图像,所有这些都驻留在内存流中,以避免需要 Windows.Forms(它是一个控制台应用程序),我正在使用函数CopyEnhMetaFile
(从 导入gdi32.dll
),将元文件作为真正的 EMF 保存到磁盘。你可以看这里、这里、这里和这里,了解我如何将这些放在一起的一些基本说明。
当我将它自上而下地编写为简单的 main() 脚本(如codeproject示例中所示)时,它工作正常。但是,当我尝试将元文件/图形对象与方法捆绑到一个类中时,我无法获得MetafileHandle
, 因为GetHenhmetafile()
返回parameter is not valid
异常。
根据这个来源,该异常清楚地表明该方法之前至少被调用过一次。但是看看我的代码。我肯定看不到我在哪里调用了它两次。也许你可以?
无论如何,我强烈怀疑我要么没有完全理解这些对象的使用方式(MemoryStreams、元文件或 P/Invoked 函数),要么我缺少关于 C# 类方式的一些基本知识工作,我希望有人能给我推动正确的方向。
[编辑以添加成功的代码,并根据建议仅保留损坏代码的上下文位]
这是有效的代码:
这是不起作用的代码。注意:我最初是用上面的“使用”结构编写的,并且有同样的错误。所以,我没有重建它,因为使用包装器过早地破坏了一些东西。无论哪种方式,我都遇到了同样的错误。
如您所见,我GetHenhmetafile()
在创建元文件本身之后直接将 放入构造函数中。我在一些笔记上这样做了,我发现这些笔记说每个实例只能调用一次此方法(例如,请参见此处)。对于喜欢冒险的人,可以在这里找到整个 repo 。
如果有帮助,这里是损坏代码中的异常详细信息(内部异常为空):
c# - 图元文件使用Graphic.DrawLines(Pen pen, Points points),点数大时图片打不开
我对 GDI+ 图元文件有疑问。我想按图形保存图元文件。当点数为 10000 并且可以打开保存的图元文件时,它工作得很好。但是当点数很大时(例如count = 10000000),mspaint.exe 无法打开图元文件。
有什么我错过的吗?元文件记录大小是否受到限制?顺便说一句,drawrectangles
也有这个问题。
这是我的代码:
c# - 将 MetaFile 保存到 Stream 并再次返回
我需要将 a 存储MetaFile
到 aStream
中并使用相同的流创建一个新的元文件。
我有以下代码,但它会引发异常:
异常消息说:ExternalException: A generic error occured in GDI+
。
我也尝试使用该方法Image.Save(stream, ImageFormat.Emf)
,但它也会引发异常。
我该如何解决这个问题?
delphi - TMetafileCanvas 示例
我打算使用 TMetafileCanvas 所以我已经开始寻找例子。在Embarcadero 方面,我找到了以下示例:
我创建了一个新项目并放置了Form,Button和PaintBox,然后我复制了上面的示例,但是执行代码时没有任何反应并且表单保持不变!
显然我做错了什么!我必须做什么那个例子应该正确吗?
gdi+ - 重新调整可放置元文件的大小
我知道标准 WMF 文件使用 18 字节的标头,后跟 GDI 命令记录。一个简单的网络搜索告诉我:“还有两个额外的 WMF 变体,它们在标准标题前面放置另一个标题。可放置的元文件使用包含 xy 坐标的 22 字节标题来定位页面上的图像”。但是对于这种元文件类型,我有点没有人手不足?与标准 WMF 相比,这种类型应该解决什么样的要求?我为什么感兴趣?我有以下代码用于重新调整 WMF 的大小并将其转换为 GIF,它在尝试从 META 文件中构造位图时失败:
并引发异常“参数无效”。
(int)(scale * img.Width / header.DpiX * 100) = 22181 (int)(scale * img.Height / header.DpiY * 100)) = 33718
[为单个位图一次分配太多内存,导致立即异常]
您将如何更改附加代码以重新调整大小并转换可放置的元文件?
c# - ContentControl WPF 不显示内容
我已将项目从https://silverlightcontrib.codeplex.com/转换 为 WPF(github https://github.com/jogibear9988/silverlightcontrib)以获得 WPF 中的 EMF/WMF 图元文件支持。
现在我的问题是,EMF 类使用 ContentControl 来显示它的内容。内容也已设置,但没有显示任何内容。如果我在 WPF-Inspector 中检查它,我会看到 EMF 控件在“逻辑树”中列出了它的内容,但在视觉中没有!谁能帮我解决这个问题?
Fork 的当前状态是在线(如果有人会查看代码!)
如果我查看窥探一切似乎都很好:
你看,内容展示器有一个内容集和填充,但它没有进入可视化树......
这是 WPF Inspector 的逻辑树:
这里是视觉: