L_LVKRN_APIL_INTL_VecRealize(pBitmap, pVector, bEraseBkgnd)
将指定的向量绘制到指定的LEAD位图句柄中。
指向位图句柄的指针,向量将被绘制到位图句柄中。
指向一个向量句柄的指针,该句柄引用要绘制到pBitmap中的向量。
标志,指示在实现位图的矢量时是否擦除背景矩形。可能取值为:
价值 | 意义 |
---|---|
真正的 | 当矢量图像实现为位图时,背景矩形将被擦除。 |
假 | 背景矩形不会被擦除。 |
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
这个函数将指定的向量绘制到指定的位图句柄中。
位图句柄应该在调用此函数之前分配。
如果hDC为NULL,此函数将假定pVector已经附加到窗口,并将其绘制到窗口DC。
用于擦除要渲染的矢量图像的矩形的背景色可以设置为L_VecSetBackgroundColor.
这个函数将使用当前相机和矢量手柄的当前视图端口在DC表面上进行必要的投影。
必需的dll和库
这个例子将为给定的矢量文件创建一个BITMAPHANDLE。
L_LTVKRNTEX_API pBITMAPHANDLE VecRealizeExample
L_TCHAR * pszFile,
L_UINT uWidth,
L_UINT uHeight,
L_INT * nRet)
{
/* uWidth和uHeight是期望的位图大小,最终的位图大小将小于或等于uWidth和uHeight。* /
VECTORHANDLE TmpVector;
最小值,最大值;
pBITMAPHANDLE pBitmap;
L_DOUBLE Width, Height, Factor;
矩形矩形;
首先加载向量*/
*nRet = L_VecLoadFile(pszFile, &TmpVector, NULL, NULL);
如果(*nRet != SUCCESS)
返回零;
/*获取矢量图像逻辑平行四边形*/
*nRet = l_vecgetobject平行四边形(&TmpVector, NULL, &Min, &Max, 0L);
如果(*nRet != SUCCESS)
返回零;
/*计算视口保留矢量图像纵横比*/
宽度=最大。x -最小x;
高度=最大。y - Min.y;
如果(uWidth < uHeight)
{
因子= uWidth / Width;
/ *检查如果高度合适在大小* /
如果((因子*高度)> uHeight)
{
/*不可以做,根据高度*/计算
因子= uHeight / Height;
}
}
其他的
{
因子= uHeight / Height;
/ *检查如果宽度合适在大小* /
如果((因子*宽度)> uWidth)
{
/*不可以做,根据width */计算
因子= uWidth / Width;
}
}
/*设置视口矩形*/
left = 0;
top = 0;
right = (L_INT)(因子*宽度);
rect.bottom = (L_INT)(因子*高度);
/*创建LEAD位图*/
pBitmap = (pBITMAPHANDLE) GlobalAllocPtr(GHND,运算符(bitmaphandle));
*nRet = L_InitBitmap(pBitmap,运算符(BITMAPHANDLE),矩形.right,矩形.bottom, 24);
如果(*nRet != SUCCESS)
返回零;
*nRet = L_AllocateBitmap(pBitmap, TYPE_CONV);
如果(*nRet != SUCCESS)
返回零;
/*设置视口*/
*nRet = L_VecSetViewport(&TmpVector, &rect);
如果(*nRet != SUCCESS)
返回零;
/*设置摄像头为俯视图位置。* /
*nRet = L_VecSetCamera(&TmpVector, NULL);
如果(*nRet != SUCCESS)
返回零;
/*渲染到位图*/
*nRet = L_VecRealize(pBitmap, &TmpVector, TRUE);
如果(*nRet != SUCCESS)
返回零;
/*释放不再需要的向量*/
*nRet = L_VecFree(&TmpVector);
如果(*nRet != SUCCESS)
返回零;
返回pBitmap;
}