设置选项:
将SVG呈现到目标设备:
L_SvgRenderOptions包含以下成员:
目标矩形,像素坐标。SVG文档将被呈现,以适应这个矩形的中心位置。
L_SvgRenderOptions。变换will be applied to this rectangle.
剪切矩形,像素坐标。引擎将把这个剪辑应用到L_SvgRenderOptions中。界限to exclude all or parts of the objects that do not fit.
L_SvgRenderOptions。变换will not be applied to this rectangle.
要应用的转换。这是一个L_MATRIX结构,可用于对最终文档应用缩放、平移和旋转。
SVG文档没有背景色。使用此属性填充L_SvgRenderOptions。界限(final transformation applied) with a color. Will only be used if L_SvgRenderOptions.UseBackgroundColor is TRUE.
使用L_SvgRenderOptions。写成BackgroundColorto fill the background of the transformed destination rectangle.
重要提示:L_SvgRenderDocument如果L_SvgNodeHandle不平坦或不包含有效边界,将返回一个错误。有关更多信息,请参阅SVG大小、边界和平面.
下面的代码演示了如何通过自动检查flat和bounds状态来呈现文档:
无效渲染文档(L_SvgNodeHandle docHandle, HDC HDC, L_SvgRenderOptions* options)
{
L_SvgNodeHandle flatDocHandle = NULL;
//如果文件不是平坦的,将其压平,自动计算大小
L_BOOL isFlat = TRUE;
L_INT nRet = L_SvgIsFlatDocument(docHandle, &isFlat);
如果(isFlat !)
L_SvgFlatDocument(docHandle, &flatDocHandle, NULL);
其他的
flatDocHandle = docHandle;
//如果文档没有有效的边界,现在自动计算它
L_SvgBounds界限;
L_SvgGetBounds (flatDocHandle界限,运算符(L_SvgBounds));
如果(bounds.IsValid !)
L_SvgCalculateBounds (flatDocHandle假);
//现在,渲染文档
L_SvgRenderDocument(hdc, flatDocHandle, options);
如果(isFlat !)
L_SvgFreeNode (flatDocHandle);
}
LEADTOOLS将创建内部数据结构以加速渲染。此数据可以被缓存和重用L_SvgBeginRenderOptimizeDocument而且L_SvgEndRenderOptimizeDocument
如果L_SvgNodeHandle只呈现一次,建议保持优化不变。但是,如果文档将被渲染多次,那么建议缓存此数据以提高速度。
L_SvgBeginRenderOptimizeDocument可能会使用存储在内部数据中的额外系统资源。L_SvgEndRenderOptimizeDocument可以在任何时候手动释放这个数据。
L_SvgBeginRenderOptimizeDocument和L_SvgEndRenderOptimizeDocument使用内部计数器来跟踪优化的状态。L_SvgBeginRenderOptimizeDocument增加这个计数器,L_SvgEndRenderOptimizeDocument减少它,因此优化只在需要时执行,任何数量的L_SvgBeginRenderOptimizeDocument和L_SvgEndRenderOptimizeDocument调用可以链接在一起而不影响文档。
这些内部数据将被自动释放L_SvgFreeNode不管计数器的值是多少。
若要确定文档是否已优化呈现数据,请使用L_SvgIsRenderOptimizedDocument.