# include“l_bitmap.h”
L_LTSVG_APIL_INTL_SvgRenderDocument(hdc, flatDocHandle, options)
将指定的SVG文档呈现到指定的设备上下文。
要用作显示表面的设备上下文(例如屏幕)的句柄。设备上下文的映射模式必须为MM_TEXT。
要呈现的SVG文档的句柄。
在呈现期间使用的选项。可以为NULL。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
对SVG的支持仅在文件和医疗成像工具包。
有关更多信息,请参阅SVG呈现.
如果指定的SVG文档不是平面的,或者没有有效的物理(像素)边界,该函数将返回一个错误。
如果选项是零,则将使用这些默认选项:
成员 | 价值 |
---|---|
界限 | 文档的当前物理边界。 |
ClipBounds | 渲染整个文档的空矩形。 |
变换 | 的身份。 |
UseBackgroundColor | 真正的 |
写成BackgroundColor | 白色的颜色 |
必需的dll和库
x64 Win32。
本例将呈现SVG文档。
L_INT SvgDocumentRenderExample(L_SvgNodeHandle docHandle, HDC HDC, L_RECTD* dstBounds)
{
L_SvgNodeHandle flatDocHandle = docHandle;
//如果文件不是平坦的,将其压平,自动计算大小
L_BOOL isFlat = TRUE;
L_INT nRet = L_SvgIsFlatDocument(docHandle, &isFlat);
如果(isFlat !)
L_SvgFlatDocument(docHandle, &flatDocHandle, NULL);
L_SvgBounds界限;
L_SvgGetBounds (flatDocHandle界限,运算符(L_SvgBounds));
如果(bounds.IsValid !)
L_SvgCalculateBounds (flatDocHandle假);
//优化渲染速度
L_BOOL optimized = L_SvgIsRenderOptimizedDocument(flatDocHandle);
如果优化(!)
L_SvgBeginRenderOptimizeDocument (flatDocHandle);
//这是我们的油漆代码
//我们将把这个SVG文档放在图片框的客户端区域
如果(dstBounds->width < 1 || dstBounds->height < 1)
返回失败;
//创建变换矩阵
L_MATRIX变换;
L_Matrix_Identity(变换);
L_SvgGetBounds (flatDocHandle界限,运算符(L_SvgBounds));
L_RECTD srbbounds = bounds.Bounds;
//计算缩放,使我们能够适应
L_DOUBLE缩放= 1.0;
如果(dstBounds->width > dstBounds->height)
{
缩放= dstBounds->width / srcBounds.width;
如果((缩放* srcBounds.height) > dstBounds->height)
缩放= dstBounds->height / srcBounds.height;
}
其他的
{
缩放= dstBounds->height / srcBounds.height;
如果((缩放* srcBounds.width) > dstBounds->width)
缩放= dstBounds->width / srcBounds.width;
}
//我们有缩放因子,在变换中设置它
L_Matrix_Scale(&变换,缩放,缩放);
/ /中心
L_DOUBLE xOffset = (dstBounds->width -(缩放* srcBounds.width)) / 2.0;
L_DOUBLE yOffset = (dstBounds->height -(缩放* srcBounds.height)) / 2.0;
L_Matrix_Translate(&transform, xOffset, yOffset);
//现在设置呈现选项
L_SvgRenderOptions renderOptions = {0};
renderOptions。StructSize =运算符(L_SvgRenderOptions);
//使用变换
renderOptions。变换= transform;
//没有剪辑
L_RectD_FromLTRB (&renderOptions。ClipBounds, 0, 0, dstBounds->width, dstBounds->height);
//用白色填充背景
renderOptions。UseBackgroundColor = TRUE;
renderOptions。BackgroundColor = RGB(255,255,255);
renderOptions。界限= srcBounds;
//渲染文档
nRet = L_SvgRenderDocument(hdc, flatDocHandle, &renderOptions);
如果(nRet != SUCCESS)
{
如果(isFlat !)
L_SvgFreeNode (flatDocHandle);
返回nRet;
}
如果优化(!)
nRet = L_SvgEndRenderOptimizeDocument(flatDocHandle);
如果(isFlat !)
L_SvgFreeNode (flatDocHandle);
返回nRet;
}