L_AnnDefine2

# include“l_bitmap.h”

L_LTANN_APIL_INTL_AnnDefine2(hObject, apt, uState)

在创建或转换注释对象时指定形状。此函数每次调用时指定当前窗口中的一个点。

参数

HANNOBJECThObject

注释对象的句柄。

pANNPOINT恰当的

指向ANNPOINT结构。指定的点在容器坐标中。

L_UINTuState

修改注释对象的过程的状态。可能取值为:

价值 意义
ANNDEFINE_SETANCHORPOINT 这是一个锚点。当将注释对象围绕其中心以外的点旋转时,使用此值。当这样做时,在调用带有ANNDEFINE_BEGINROTATE标志的L_AnnDefine2之前,先设置这个标志来调用L_AnnDefine2。
ANNDEFINE_BEGINMOVEPOINT [11]这是一个起始点,用于移动注释对象上的一个点。这可以用来移动任何注释对象上的一个点:
ANNOBJECT_LINE
ANNOBJECT_POLYLINE
ANNOBJECT_POLYGON
ANNOBJECT_POINTER
ANNOBJECT_FREEHAND
ANNOBJECT_FREEHANDHOTSPOT
ANNOBJECT_RULER
ANNOBJECT_CROSSPRODUCT
ANNOBJECT_PROTRACTOR
ANNOBJECT_CURVE
ANNOBJECT_CURVECLOSED
你可以使用ANNDEFINE_BEGINMOVEPOINT对以下对象执行同步旋转和调整大小:
(注意你必须在使用ANNDEFINE_BEGINMOVEPOINT之前设置一个锚点)
ANNOBJECT_RECT
ANNOBJECT_ELLIPSE
ANNOBJECT_HILITE
ANNOBJECT_REDACT
ANNOBJECT_TEXT
ANNOBJECT_NOTE
ANNOBJECT_STAMP
ANNOBJECT_HOTSPOT
在执行此操作时,在调用带有ANNDEFINE_BEGINMOVEPOINT标记的L_AnnDefine2之前,先设置ANNDEFINE_SETANCHORPOINT标记。

返回

价值 意义
成功 活动很成功。
< 1 发生错误。指返回代码

评论

此函数仅用于以下状态:

如果你试着用uState如果不是ANNDEFINE_SETANCHORPOINT或ANNDEFINE_BEGINMOVEPOINT,则函数返回ERROR_INV_PARAMETER。

这个函数类似于L_AnnDefine,除了L_AnnDefine2取容器坐标中的一个点,而L_AnnDefine取客户端坐标中的一个点。

当设置锚点或同时旋转和调整大小时需要额外的精度时,请使用此函数。这个函数应该与L_AnnDefine一起使用。

举个例子,假设你想通过移动aptMove点来旋转和调整锚点aptAnchor周围的矩形,如下图所示:

图像\ Ann14Doc_2.gif

这可以通过只使用L_AnnDefine来完成,但是因为L_AnnDefine接受整型参数,而aptAnchor和aptMove不是整型参数,所以旋转和调整大小将不是精确的。

为了解决这个问题,并准确地同时执行旋转和调整大小,使用L_AnnDefine2和L_AnnDefine如下所示:

ANNPOINT aptAnchor;ANNPOINT aptMove;aptMove。X = 10.2;aptMove。Y = 10.5aptAnchor。X = 10.2;aptAnchor。Y = 50.5ptLocation。X = 10;ptLocation。Y = 20;L_AnnDefine2(hObject, &aptAnchor, ANNDEFINE_SETANCHORPOINT);L_AnnDefine2(hObject, &aptMove, ANNDEFINE_BEGINROTATE);//一个或多个ANNDEFINE_APPENDL_AnnDefine(pData->hObjectChange, &pMousePos->pt, ANNDEFINE_APPEND);L_AnnDefine(pData->hObjectChange, &pMousePos->pt, ANNDEFINE_END);

必需的dll和库

平台

x64 Win32。

另请参阅

功能

主题

例子

此示例使用静态变量模拟用户输入
围绕矩形底部中心线上的一点旋转/调整矩形的大小。
最初矩形不能旋转。

L_INT AnnDefine2Example(HANNOBJECT)L_INT nRet;//模拟用户输入的计数器静态L_INT nCallCount = 0;L_UINT uType;ANNRECT arcRect;ANNPOINT aptAnchor;//容器坐标中的锚点ANNPOINT aptMove;//在容器坐标中移动点点ptMove;//移动客户端坐标中的点L_DOUBLE摇摆;HANNOBJECT hContainer;nRet = L_AnnGetType(hRect, &uType);如果(nRet != SUCCESS)返回nRet;如果(uType != ANNOBJECT_RECT)对话框(NULL,文本(“对象必须是矩形。”),文本(“错误”), MB_OK);返回0;nRet = L_AnnGetRotateAngle(hRect, &dAngle);如果(nRet != SUCCESS)返回nRet;如果(dAngle != 0)对话框(NULL,文本(“物体不能旋转。”),文本(“错误”), MB_OK);返回nRet;+ + nCallCount;开关(nCallCount)情况下1:nRet = L_AnnGetRect(hRect, &arcRect, NULL);如果(nRet != SUCCESS)返回nRet;aptAnchor。x = (arcRect。left + arcect .right) / 2;aptAnchor。y = arcect .bottom;aptMove。x = (arcRect。left + arcect .right) / 2;aptMove。y = arcect .top;nRet = L_AnnDefine2(hRect, &aptAnchor, ANNDEFINE_SETANCHORPOINT);如果(nRet != SUCCESS)返回nRet;nRet = L_AnnDefine2(hRect, &aptMove, ANNDEFINE_BEGINMOVEPOINT);如果(nRet != SUCCESS)返回nRet;对话框(NULL,文本(调用ExampleAnnDefine2来完成旋转/调整大小。),文本(""), MB_OK);打破情况下2:nRet = L_AnnGetRect(hRect, &arcRect, NULL);如果(nRet != SUCCESS)返回nRet;aptMove。x = arcect .right;aptMove。y = arcect .top;nRet = L_AnnGetTopContainer(hRect, &hContainer);如果(nRet != SUCCESS)返回nRet;nRet = L_AnnConvert(hContainer, &ptMove, &aptMove, 1, ANNCONVERT_TO_CLIENT);如果(nRet != SUCCESS)返回nRet;nRet = L_AnnDefine(hRect, &ptMove, ANNDEFINE_END);如果(nRet != SUCCESS)返回nRet;nCallCount = 0;对话框(NULL,文本(“旋转/缩放完成!”),文本(""), MB_OK);打破返回成功;

栅格成像C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。