# 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;}