- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
场景是我有一个打印机 EMF 文件。我想在将其发送到打印机之前在其上覆盖一些数据。打印机文件为 300dpi。保持相同的打印质量非常重要。
我正在使用此代码转换 emf 文件...
b:=TBitmap.create;
MyMetaFile.LoadFromFile(emf);
MyCanvas:= TMetafileCanvas.Create(MyMetaFile, 0);
try
Width:=MyMetaFile.Width;
Height:=MyMetaFile.Height;
b.width:=width;
b.height:=height;
b.Canvas.Draw(0, 0, MyMetaFile);
b.SaveToFile('c:\emftest.bmp');
这种方法是有效的,只是你只能得到 emf 文件的左上角。如果你在 Windows 中查看 EMF 文件的属性,它会显示 2551x3301。但这里的宽度和高度设置为613x792。如果我用这些值覆盖 b.width 和 b.height 就可以了,但我显然不想这样做。 EMF文件为300dpi,屏幕dpi约为100,但误差为4.16。知道这里发生了什么吗?
谢谢特里
最佳答案
您必须在此处使用 StrechDraw
而不是 Draw
,以便将内容缩放到预期的位图大小。
例如:
function MetafileToBitmap(Source: TMetafile; ScaleX,ScaleY: integer): TBitmap;
var R: TRect;
begin
result := nil;
if Source=nil then // self=nil is OK below
Exit;
R.Left := 0;
R.Right := (Source.Width*ScaleX)div 100;
R.Top := 0;
R.Bottom := (Source.Height*ScaleY)div 100;
result := TBitmap.Create;
result.Width := R.Right;
result.Height := R.Bottom;
Dec(R.Right); // Metafile rect includes right and bottom coords
Dec(R.Bottom);
PlayEnhMetaFile(Result.Canvas.Handle,Source.Handle,R);
end;
如果您想使用 GDI+ 进行抗锯齿绘图,则需要枚举图元文件内容,然后使用 our Open Source SynGdiPlus unit 进行渲染。 :
function LoadFrom(const MetaFile: TMetaFile): TBitmap;
关于delphi - 将 EMF 文件转换为位图并获得正确的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15353950/
我理解 eclipse 验证框架工作原理的方式: 用工厂生成一个对象 为此对象中的属性设置一个值 检查验证 例如: public class ValidateNameTest { public sta
我想做双向 Model2Model 转换。两种模型都基于 EMF/eCore。实际上,我更希望一个模型是另一个模型的可编辑 View 。 我有哪些选择? 哪些工具和转换语言可用,它们有哪些限制? 最佳
将.xsd -files转换为.ecore -files的最佳方法是什么? 是否有一个Eclipse插件? 最佳答案 那对我有用: 新建->项目... Eclipse建模框架-> EMF项目 模型导入
假设我有 Person EMF 模型。我创建了这个模型 bob.person 和 mike.person 的 2 个实例。有没有办法在我的工作区中创建所有模型的集合,这些模型是 Person 并使用
我想在 ecore 模型中使用 derived 属性和引用,但到目前为止,我还没有找到任何关于如何为计算派生属性/引用值的方法设置代码的文档. 据我了解,基本的工作流程是将一个属性/引用标记为deri
我们的程序需要生成矢量图形,为此我们选择了 EMF。然而,其他程序似乎使这些图像呈现非抗锯齿效果。我发现 SVG 格式确实有一个标志来指示某些/所有对象应该抗锯齿。 EMF 格式中是否有任何类型的标志
我现在正在深入研究 EMF,并遇到了以下问题: 我正在尝试使用以下代码从字段集中删除字段: FieldElem ff = ds.getContent().getNestedFieldset().ge
我是 MDSD/EMF 的新手,但由于 Eclipse 的支持,我取得了很大进步。 我昨天按照 awynne 的建议创建了一个玩具模型,我非常接近。我只使用 EMF 及其生成的树编辑器。 这是我的 E
我有一个大型 EMF 模型,更具体地说是来自 MDT 项目的 BPMN2.0 模型。我们的软件有一个要求,就是必须支持 oracle JDeveloper BPMN2 导出格式,该格式几乎对应于 BP
我的模型包含一个名为 Result 的接口(interface)。我有多个实现所述接口(interface)的类。现在我想添加结果列表作为结果。我希望能够创建类似的东西: 列表 ,其中 只能包含所选的
我刚刚开始使用 Eclipse Modeling Framework (EMF),在使用以下教程时遇到了一些问题: http://www.vogella.com/tutorials/EclipseEM
在具有声明为 transient 和 volatile 属性的 Ecore 模型中(它的值是从其他几个字段计算的),是否有一种规范的方法来生成对该字段的更改的通知(即,当其中一个字段被transien
我读过 some tutorials关于EMF我仍然想知道为什么我应该使用它。 直到现在,我都是从 XSD 架构 + JXC 生成我的 POJO ,或手动。 就我对 EMF 的理解而言,定义类之间的一
我遇到了 devEMF 包中的 emf() 函数的问题。 我正在使用的代码 - library(devEMF) emf(file = "trial.emf") plot(1:10, seq(10, 1
我将能够创建背景颜色为 50% 透明而其他元素完全不透明的 EMF 图像(以编程方式或通过软件)。 我已经能够创建一个完全透明的背景,但没有一定的 alpha/opacity。 创建这个半透明背景将允
在我的应用程序中,我应该比较两个源代码文件以查看是否发生了更改,然后突出显示这些更改。为此我想到使用 EMF 比较。我的应用程序是一个独立的应用程序,不用作插件或类似的东西。它应该在没有 Eclips
我正在实现一个商业 RCP 应用程序,用户可以在其中创建以下格式的项目: 项目1 子元素1 子元素2 子子元素1 项目2 ... 等等 我正在使用 EMF 对数据域进行建模,并且我想保存数据。我想要一
我需要通过java编码来创建一个动态EMF对象。是否可以 ?如果是这样,请用代码片段向我解释如何创建 EMF 对象。 最佳答案 要以编程方式创建 eObject,只需使用 EcoreUtil 和 Ec
当我尝试加载 EMF 文件时出现以下错误: Exception thrown: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:
场景是我有一个打印机 EMF 文件。我想在将其发送到打印机之前在其上覆盖一些数据。打印机文件为 300dpi。保持相同的打印质量非常重要。 我正在使用此代码转换 emf 文件... b:=TBit
我是一名优秀的程序员,十分优秀!