L_SetMagGlassOwnerDrawCallback

# include“l_bitmap.h”

L_LTDIS_APIL_INTL_SetMagGlassOwnerDrawCallback (hWnd, pfnCallback pUserData)

设置一个回调函数,它可以让用户提供自定义的放大镜呈现。

参数

L_HWNDhWnd

的处理窗口的放大镜。

MAGGLASSOWNERDRAWCALLBACKpfnCallback

回调函数被称为每次放大镜需要重新粉刷。

回调函数必须遵守所描述的函数原型MAGGLASSOWNERDRAWCALLBACK函数。

L_VOID* pUserData

空指针,您可以使用它通过一个或多个回调函数需要额外的参数。

要使用该功能,赋值给一个变量或创建一个结构,其中包含你需要的尽可能多的领域。然后,在这个参数,通过变量的地址或结构,铸造L_VOID *。回调函数,接收地址的pUserData参数,可以把它适当的数据类型的指针来访问变量或结构。

如果不需要额外的参数,该参数可以传递NULL。

返回

价值 意义
成功 函数是成功的。
< 1 一个错误发生。指返回代码

评论

如果设置了一个用户定义的回调函数通过调用L_SetMagGlassOwnerDrawCallback,之后L_StartMagGlass被称为直流和放大镜油漆本身,但在放大镜显示在屏幕上,用户可以改变什么是直流的,通过用户定义的回调函数。这允许用户提供自定义渲染的放大镜。例如,该功能允许您呈现放大的注释,这可能是覆盖当前显示图像,或者只是简单地覆盖目前在放大镜显示区域。

必需的dll和库

平台

x64 Win32。

另请参阅

功能

结构

主题

例子

请注意,这不是一个完整的示例!
这是一段注释的演示程序。
完整的代码,参考ANNOTATE.C。

/ * <结构体> * /# ifdef LET_DEFINE类型定义结构体_MAGCHILDDATA{intcxClient;客户区* / / *宽度intcyClient;/ *客户区* /的高度intnHScrollPos;/ * x滚动位置* /intnVScrollPos;* / / * y滚动位置intnHScrollMax;* / / *最大x滚动位置intnVScrollMax;/ *最大y滚动位置* /intnHScrollStep;/ * x滚动的一步价值* /intnVScrollStep;/ * y滚动的一步价值* /BOOL bThumbTrack;BOOL fFitImage;intnZoom;矩形rcView;矩形rcClient;矩形rcWindow;BITMAPHANDLE位图;HPALETTE HPALETTE;HANNOBJECT hContainer;HANNOBJECT hAutomation;BOOL fInScroll;BOOL fShowLock;HANNOBJECT hRect;HANNOBJECT hEllipse;BOOL fCapture;BOOL fLeftButtonDown;点pt0;BOOL bMagGlass;L_INT nMagWidth;L_INT nMagHeight;L_INT nMagZoom;L_BOOL bDoubleBuffer;L_HANDLE hDoubleBuffer;}MAGCHILDDATA,远* LPMAGCHILDDATA;# endif/ * < /结构体> * /L_INT EXT_CALLBACK MagGlassOwnerDrawCallback (L_HWND hWnd,HDC hMemDC,L_INT32 nXPos,L_INT32 nYPos,LPRECT pMagGlass,L_VOID * pUserData){UNREFERENCED_PARAMETER (hWnd);LPMAGCHILDDATA pData = (LPMAGCHILDDATA) pUserData;L_DOUBLE OffsetXOld OffsetYOld;L_DOUBLE OffsetX OffsetY;L_DOUBLE ScalarXOld ScalarYOld;L_DOUBLE ScalarX ScalarY;L_DOUBLE MagCenterX MagCenterY;L_DOUBLE BitmapX BitmapY;L_DOUBLE MagDestX MagDestY;矩形钢筋混凝土;L_AnnPushFixedState (pData - > hContainer ANNFLAG_RECURSE | ANNFLAG_NOINVALIDATE);L_AnnGetOffsetX (pData - > hContainer &OffsetXOld);L_AnnGetOffsetY (pData - > hContainer &OffsetYOld);L_AnnGetScalarX (pData - > hContainer &ScalarXOld);L_AnnGetScalarY (pData - > hContainer &ScalarYOld);MagCenterX = nXPos;MagCenterY = nYPos;BitmapX = (L_DOUBLE) (MagCenterX-pData - > rcView.left) / ((L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图));BitmapY = (L_DOUBLE) (MagCenterY-pData - > rcView.top) / ((L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图));MagDestX = BitmapX * ((L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图))* ((L_DOUBLE) pData - > nMagZoom f / 100.0);MagDestY = BitmapY * ((L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图))* ((L_DOUBLE) pData - > nMagZoom f / 100.0);OffsetX = ((L_DOUBLE) (pMagGlass - >右- pMagGlass - >左)/ 2.0 f) - MagDestX;OffsetY = ((L_DOUBLE) (pMagGlass - >下- pMagGlass - >上)/ 2.0 f) - MagDestY;ScalarX = (L_DOUBLE) (pData - > rcView。对- pData - > rcView.left) / (L_DOUBLE) BITMAPWIDTH (&pData - >位图)* ((L_DOUBLE) pData - > nMagZoom f / 100.0);ScalarY = (L_DOUBLE) (pData - > rcView。底- pData - > rcView.top) / (L_DOUBLE) BITMAPHEIGHT (&pData - >位图)* ((L_DOUBLE) pData - > nMagZoom f / 100.0);L_AnnSetOffsetX (pData - > hContainer、OffsetX ANNFLAG_NOINVALIDATE);L_AnnSetOffsetY (pData - > hContainer、OffsetY ANNFLAG_NOINVALIDATE);L_AnnSetScalarX (pData - > hContainer、ScalarX ANNFLAG_NOINVALIDATE);L_AnnSetScalarY (pData - > hContainer、ScalarY ANNFLAG_NOINVALIDATE);SetRect (rc, 0, 0, pData - > nMagWidth, pData - > nMagHeight);L_AnnDraw (hMemDC、rc pData - > hContainer);L_AnnSetOffsetX (pData - > hContainer、OffsetXOld ANNFLAG_NOINVALIDATE);L_AnnSetOffsetY (pData - > hContainer、OffsetYOld ANNFLAG_NOINVALIDATE);L_AnnSetScalarX (pData - > hContainer、ScalarXOld ANNFLAG_NOINVALIDATE);L_AnnSetScalarY (pData - > hContainer、ScalarYOld ANNFLAG_NOINVALIDATE);L_AnnPopFixedState (pData - > hContainer ANNFLAG_RECURSE | ANNFLAG_NOINVALIDATE);返回成功;}L_INT SetMagGlassOwnerDrawCallbackExample (L_HWND hwnd, LPMAGCHILDDATA pData){L_INT nRet;MAGGLASSOPTIONS选项;nRet = L_AnnSetActiveState (pData - > hAutomation ANNACTIVE_DISABLED);如果(nRet ! =成功)返回nRet;pData - > nMagWidth = 200;pData - > nMagHeight = 200;pData - > nMagZoom = 200;选项。uStructSize =运算符(MAGGLASSOPTIONS);选项。nWidth = pData - > nMagWidth;选项。nHeight = pData - > nMagHeight;选项。nZoom = pData - > nMagZoom;选项。clrPen = RGB (0, 0, 0);选项。hMagCursor =零;选项。clrBack = RGB (128128128);选项。bEllipse = FALSE;选项。nBorderSize = 1;选项。b3D = FALSE;选项。uPaintFlags = 0;选项。pMask =零;选项。uMaskCount = 0;选项。uMagGlassFlags = CROSSHAIR_FINE;选项。nCrosshair = 1;选项。bIgnoreRgn = TRUE;选项。bCenter = TRUE;nRet = L_StartMagGlass (hwnd,&pData - >位图,&pData - > rcView,选项,空,pData);如果(nRet ! =成功)返回nRet;nRet = L_SetMagGlassOwnerDrawCallback (hwnd, MagGlassOwnerDrawCallback pData);如果(nRet ! =成功)返回nRet;pData - > bMagGlass = TRUE;返回成功;}

LEADTOOLS光栅成像C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。