# include“l_bitmap.h”
L_LTANN_APIL_INTL_AnnDefine2(hObject, apt, uState)
在创建或转换注释对象时指定形状。此函数每次调用时指定当前窗口中的一个点。
注释对象的句柄。
指向ANNPOINT结构。指定的点在容器坐标中。
修改注释对象的过程的状态。可能取值为:
价值 | 意义 |
---|---|
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周围的矩形,如下图所示:
这可以通过只使用L_AnnDefine来完成,但是因为L_AnnDefine接受整型参数,而aptAnchor和aptMove不是整型参数,所以旋转和调整大小将不是精确的。
为了解决这个问题,并准确地同时执行旋转和调整大小,使用L_AnnDefine2和L_AnnDefine如下所示:
ANNPOINT aptAnchor;
ANNPOINT aptMove;
aptMove。X = 10.2;
aptMove。Y = 10.5
aptAnchor。X = 10.2;
aptAnchor。Y = 50.5
ptLocation。X = 10;
ptLocation。Y = 20;
L_AnnDefine2(hObject, &aptAnchor, ANNDEFINE_SETANCHORPOINT);
L_AnnDefine2(hObject, &aptMove, ANNDEFINE_BEGINROTATE);
//一个或多个ANNDEFINE_APPEND
L_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);
打破;
}
返回成功;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。