人机协同控制模块
视觉算法+运动控制引擎
开发周期缩短40%+

十三.CWindowDelegate类

CWindowDelegate代理窗口的绘制工作,实现窗口的显示方式,显示内容,UC控件的编辑和现实功能。CWindowDelegate具有设计模式和运行模式,两种模式不同,显示的内容有些差异。

13.1常量

CDelegate类中的常量

画布刷新类型

名字 说明
RT_FLUSH 刷新(目前与RT_REALIZE效果一样)
RT_REALIZE 实现并刷新
RT_UPDATE 更新并实现
RT_REDRAW 重绘(将会清除以前的绘制)
RT_PURE 仅绘制与类本身有关的绘制任务,不进行清除或实现

工作模式

名字 说明
DM_DESIGN 设计模式
DM_RUNTIME 运行模式

选择状态

名字 说明
SS_NONE 无选择
SS_SINGLE 单选择
SS_MULTIPLE 多选择(全部无效)

鼠标击中测试

名字 说明
HP_NOTHING
HP_ROTATER 旋转点
HP_GRABBER 抓取点
HP_MIDDLE 中间点(CC对象区域的任何一点)
HP_EXTENDER 扩展点

跟踪鼠标类型

名字 说明
TT_NONE
TT_RESIZE 更改大小
TT_MOVE 移动
TT_ROTATE 旋转

RVB标识显示位置

名字 说明
LA_LEFTTOP 窗口左上角
LA_RIGHTTOP 窗口右上角
LA_LEFTBOTTOM 窗口左下角
LA_RIGHTBOTTOM 窗口右下角

显示模式

名字 说明
VM_DEFAULT 默认模式
VM_CENTER 居中显示
VM_STRETCH 拉伸显示
VM_STRETCH_KR 等比拉伸显示
背景模式
名字 说明
BS_CHECK 方格
BS_WHITE 白色
BS_BLACK 黑色
BS_RED 红色
帧翻转类型
名字 说明
FT_NONE 不翻转
FT_BOTH 垂直和水平方向都翻转
FT_HORI 水平方向都翻转
FT_VERT 垂直方向都翻转

13.2函数

Initialize

声明:virtual BOOL Initialize(HWND hWnd, RV_CONTEXT_TYPE canvasType=RV_CT_GENERIC, int canvasWidth=-1, int canvasHeight=-1 );

描述:初始化指定窗口的图像绘制上下文。

参数:1、HWND hWnd – 窗口句柄

2、RV_CONTEXT_TYPE canvasType – 上下文类型

3、 int canvasWidth – 画布宽度

4、 int canvasHeight – 画布高度

返回:TRUE 或FALSE

Finalize

声明: virtual void Finalize();

描述 :释放窗口的图像绘制上下文。

参数:无

返回值:无

SetViewMode

声明:void SetViewMode(CWindowDelegate::VIEW_MODE mode, BOOL bRefresh=FALSE)

描述:设置窗口视图的显示模式。

参数:1、CWindowDelegate::VIEW_MODE mode – 显示模式

2、BOOL bRefresh – 是否进行刷新

返回值:无

GetViewMode

声明:CWindowDelegate::VIEW_MODE GetViewMode();

描述:获取窗口视图的显示模式。

参数:无

返回值:显示模式

备注:

SetBackgroundStyle

声明:void SetBackgroundStyle(CWindowDelegate::BACKGOURND_STYLE style, BOOL bRefresh=FALSE);

描述 :设置背景样式

参数:1、CWindowDelegate::BACKGOURND_STYLE style – 背景样式

2、BOOL bRefresh – 是否进行刷新

返回值: 无

备注:

GetBackgroundStyle

声明: CWindowDelegate::BACKGOURND_STYLE GetBackgroundStyle( );

描述 获取背景样式。

参数:无

返回值: 背景式样

备注:

SetBlankColor

声明:void SetBlankColor(GRgb color, BOOL bRefresh=FALSE);

描述 :设置窗口空白区的颜色。

参数:1、GRgb color – 颜色

2、BOOL bRefresh – 是否进行刷新

返回值: 无

备注:当画布的尺寸小于窗口大小时,窗口空白区的颜色与画布的颜色可能不一样。这个函数就是设置窗口画布区的颜色

GetBlankColor

声明:GRgb GetBlankColor( );

描述: 获取窗口空白区的颜色。

参数:无

返回值:空白区颜色

备注:

SetRvbLogoVisible

声明: void SetRvbLogoVisible(BOOL flag, BOOL bRefresh=FALSE);

描述 设置RVB标识是否可见。

参数:1、BOOL flag– TRUE 或者FALSE

2、BOOL bRefresh – 是否进行刷新

返回值: 无

备注:

IsRvbLogoVisible

声明:BOOL IsRvbLogoVisible();

描述 判断RVB标识是否可见。

参数:无

返回值: TRUE或者FALSE

备注:

SetRvbLogoAlignment

声明: void SetRvbLogoAlignment(CWindowDelegate::LOGO_ALIGN alignment, BOOL bRefresh=FALSE);

描述:设置RVB标识显示位置。

参数:1、CWindowDelegate::LOGO_ALIGN alignment– 显示位置

2、BOOL bRefresh – 是否进行刷新

返回值:无

备注:

GetRvbLogoAlignment

声明: CWindowDelegate::LOGO_ALIGN GetRvbLogoAlignment();

描述:获取RVB标识显示位置。

参数:无

返回值:显示位置

备注:

GetViewScale

声明:void GetViewScale(float* pScaleX, float* pScaleY);

描述:获取窗口的显示比例。

参数:1、float* pScaleX – 水平方向的比例指针,输出。

2、float* pScaleY –垂直方向的比例指针,输出。

返回值: 无

备注:

SetViewScale

声明: void SetViewScale(float scaleX, float scaleY);

描述:设置窗口的显示比例。

参数:1、float scaleX,– 水平方向的比例。

2、float scaleY –垂直方向的比例。

返回值: 无

备注:

GetDisplayRect

声明: GRect GetDisplayRect();

描述:获取窗口的显示矩形。

参数:无

返回值:矩形

备注:该矩形为窗口的大小

GetClientRect

声明:GRect GetClientRect();

描述:获取窗口的显示的画布矩形。

参数:无

返回值:矩形

备注:该函数返回的矩形为在窗口里面画布矩形,小于等于窗口矩形。

AddUC

声明:void AddUC(CUCObj* pObj);

描述:添加一个UC对象到窗口。

参数:CUCObj* pObj – 对象指针

返回值: 矩形

备注: 当将一个对象添加到Window Delegate以后,该对象会被显示出来,在设计状态下,可以被选择,改变大小,拖动等。

GetUCAt

声明:CUCObj* GetUCAt( int index, BOOL bSelOnly=FALSE);

描述:获取窗口的里面指定索引的UC对象。

参数:1、int index – 索引

2、BOOL bSelOnly – 是否仅为选中的UC对象。(注意:目前版本的RVB里面,该参数意义)

返回值:UC对象指针

备注:

GetUCCount

声明:int GetUCCount( BOOL bSelOnly=FALSE);

描述:获取窗口的里面UC对象的数量。

参数:BOOL bSelOnly – 是否仅为选中的UC对象。(注意:目前版本的RVB里面,该参数意义)

返回值:UC对象数量

备注:

RemoveAll

声明:void RemoveAll(FN_DESTOY_OBJ fnDestroyObj=NULL);

描述:将窗口中所有的UC对象移除。

参数:FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值:无

备注:如果对象释放函数不为空,将同时释放所有的被移除的对象。

RemoveUC

声明:void RemoveUC(CUCObj* pObj, FN_DESTOY_OBJ fnDestroyObj=NULL);

void RemoveUC( const char* strName, FN_DESTOY_OBJ fnDestroyObj=NULL);

描述:移除窗口指定的单个UC对象。对象可以按照指针,ID,名字,索引等方式进行指定。

参数:1、CUCObj* pObj – UC对象指针

2、const char* strName – UC对象名字

3、int index, - 索引位置

4、UINT id – 对象ID

5、FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值:无

备注:如果对象释放函数不为空,将同时释放被移除的对象。

LockUC

声明:void LockUC( int index, BOOL flag);

void LockUC(CUCObj* pObj, BOOL flag);

void LockUC( const char* name, BOOL flag);

void LockUC( UINT id, BOOL flag);

描述:锁定窗口指定的单个UC对象,被锁定的对象将不能被编辑。对象可以按照指针,ID,名字,索引等方式进行指定。

参数:1、CUCObj* pObj – UC对象指针

2、const char* strName – UC对象名字

3、int index, - 索引位置

4、UINT id – 对象ID

5、FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值:无

备注:如果对象释放函数不为空,将同时释放被移除的对象。

DisableUC

声明:void DisableUC( int index, BOOL flag);

void DisableUC(CUCObj* pObj, BOOL flag);

void DisableUC( const char* name, BOOL flag);

void DisableUC( UINT id, BOOL flag);

描述:禁止窗口指定的单个UC对象。对象可以按照指针,ID,名字,索引等方式进行指定。

参数:1、CUCObj* pObj – UC对象指针

2、const char* strName – UC对象名字

3、int index, - 索引位置

4、UINT id – 对象ID

5、FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值:无

备注:如果对象释放函数不为空,将同时释放被移除的对象。

HideUC

声明:void HideUC( int index, BOOL flag);

void HideUC(CUCObj* pObj, BOOL flag);

void HideUC( const char* name, BOOL flag);

void HideUC( UINT id, BOOL flag);

描述:隐藏窗口指定的单个UC对象。对象可以按照指针,ID,名字,索引等方式进行指定。

参数:1、CUCObj* pObj – UC对象指针

2、const char* strName – UC对象名字

3、int index, - 索引位置

4、UINT id – 对象ID

5、FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值:无

备注:如果对象释放函数不为空,将同时释放被移除的对象。

SelectUC

声明:void SelectUC( int index, int flag);

void SelectUC(CUCObj* pObj, int flag);

void SelectUC( const char* name, int flag);

void SelectUC( UINT id, int flag);

描述:选择窗口指定的单个UC对象(目前窗口仅支持单选)。对象可以按照指针,ID,名字,索引等方式进行指定。

参数:1、CUCObj* pObj – UC对象指针

2、const char* strName – UC对象名字

3、int index, - 索引位置

4、UINT id – 对象ID

5、FN_DESTOY_OBJ fnDestroyObj – 对象释放函数。

返回值: 无

备注:如果对象释放函数不为空,将同时释放被移除的对象。

Refresh

声明:virtual void Refresh(REFRESH_TYPE type);

描述:将窗口的显示区域进行重画。

参数:REFRESH_TYPE type – 重绘类型

返回值: 矩形

备注:该函数可以被其他继承CWindowDelegate的类重载,实现用户自定义的绘制任务。

ClearCanvas

声明:void ClearCanvas(BOOL bRefresh=FALSE);

描述:清除当前的绘制的笔画。

参数:BOOL bRefresh – 是否进行刷新

返回值:无

备注: 窗口绘制的时候实际上是创建笔画对象。在该函数被调用以后,应用程序必须调用Refresh刷新,调用类型 为RT_REDRAW,如果没有实际的绘制对象,也可以进行RT_REALIZE类型的刷新。否则会出现无可预料的错误。

PaintImage

声明:void PaintImage(const RvImage image, BOOL bRefresh=FALSE);

描述:按照拉伸的方式绘制图像,即将图像绘制到整个画布。

参数:1、const RvImage image – 图像对象

2、BOOL bRefresh – 是否进行刷新

返回值:无

备注: 该函数不会产生笔画句柄。多次调用的时候,如果没有进行画布清除,可能产生内存泄漏。

PaintObject

声明:void PaintObject( CUCObj* pObj, BOOL bRefresh= FALSE);

描述:绘制一个UC对象。

参数:1、CUCObj* pObj – UC对象

2、BOOL bRefresh – 是否进行刷新

返回值:无

备注:该函数不要轻易使用,在同一个UC对象在别的CWindowDelegate中绘制之前,必须首先清除这个函数的绘制。否则会产生不可预料的效果。

SaveCanvas

声明:BOOL SaveCanvas(RvImage image);

描述:将窗口中的绘制结果保存到一个数字图像对象。

参数:RvImage image – 数字图像,保存画布绘制结果

返回值: TRUE或者FALSE

备注: 保存画布结果的图像必须为RIT_RGB或RIT_RGBA格式,图像的大小会根据画布大小进行调整。

GetCanvasWidth

声明:int GetCanvasWidth();

描述:获得画布的宽度 。

参数:无

返回值:宽度

备注:

GetCanvasHeight

声明:int GetCanvasHeight();

描述:获得画布的高度 。

参数:无

返回值:高度

备注:

GetFlipType

声明:FLIP_TYPE GetFlipType();

描述:获得画布的内置帧图像的翻转类型。

参数:无

返回值:翻转类型

备注: 内置帧图像由FeedFrame获得。

SetFlipType

声明:void SetFlipType(FLIP_TYPE type);

描述:获得画布的内置帧图像的翻转类型。

参数:FLIP_TYPE type – 翻转类型

返回值:无

备注:

IsEditionLocked

声明:BOOL IsEditionLocked();

描述:判断画布当前的编辑状态是否为锁定状态。

参数:无

返回值:TRUE 或FALSE

备注:

SetEditionState

声明:void SetEditionState(BOOL bLock);

描述:设置编辑状态。

参数:BOOL bLock – 是否锁住

返回值:无

备注:

FeedFrame

声明:void FeedFrame(const RvImage image, BOOL bRefresh=FALSE);

描述:供应一帧图象给画布。。

参数:1、const RvImage image- 数字图象

2、BOOL bRefresh – 是否进行刷新

返回值:无

备注: 如果图象对象的格式与画布当前的格式不一致,将无效。

GetCurFrame

声明:const RvImage GetCurFrame() ;

描述:获得当前帧图象。

参数:无

返回值:数字图象

备注:如果当前没有供应图象给画布,将返回NULL。

SetSightFormat

声明:void SetSightFormat(RV_IMAGE_TYPE type, int width, int height );

描述:获得当前帧图象。

参数:1、RV_IMAGE_TYPE type – 数字图象类型

2、int width –图象宽度

3、int height – 图象高度

返回值:无

备注:

SetDesignMode

声明:virtual void SetDesignMode(CDelegate::DESIGN_MODE mode, BOOL bRefresh=FALSE) ;

描述:设置当前工作模式。

参数:1、CDelegate::DESIGN_MODE mode – 工作模式

2、BOOL bRefresh – 是否需要刷新

返回值:无

备注:

GetDesignMode

声明:CDelegate::DESIGN_MODE GetDesignMode();

描述:获得当前工作模式。

参数:无

返回值:工作模式

备注:

GetScrollBarRange

声明:GSize GetScrollBarRange();

描述:获得滚动条支持的行程。

参数:无

返回值:行程

备注:当画布显示的时候大于窗口大小时,水平方向或垂直方向可能会需要进行滚动显示

SetScrollBarPos

声明:void SetScrollBarPos(int pos, BOOL bVert);

描述:设置滚动条支持的行程。

参数:1、int pos – 位置

2、BOOL bVert – 是否为垂直滚动条。

返回值:无

备注:

EventProc

声明:virtual BOOL EventProc(RV_HANDLE hObj, UINT uEvent, WPARAM wParam, LPARAM lParam){ return FALSE;};

描述: 内部事件处理。

参数:无

返回值:

备注:Window Delegate在有些时候会激发一些内部事件,这些事件一般由WINDOWS消息激发,应用程序通过重载该函数进行功能扩展。



QQ技术交流群:
微信技术交流群:
Marklab工作室
研发中心: 广东省东莞市大岭山镇元岭小区翠云街1巷16号
商务中心: 广东省东莞市松湖智谷B6栋225b

二维码1 二维码2 二维码3


Marklab工作室 版权所有  粤ICP备13082990号-2   友情链接 hao123 绿盟 搜狗 站长之家 太平洋下载 天极下载 淘宝店 软云动力

赞助和协作单位 广东省科学院自动化研究所 深圳市东百胜技术有限公司

统计显示 ▼