基于Duilib的白板项目

基于duilib的白板工具,可适用用教育行业或者是视频会议的演示白板

目标:

1 设计之初就是想实现类似于办公室玻璃墙的一样的白板,可书写,透明,还可以添加自己需要的工具
2 除了duilib不依赖其他的界面库,可以插入到任何工程中。

优势:

1 这块“玻璃”可以覆盖在任何窗口的上面,而且不用关心“玻璃”下面是什么东西,这样就可以将任何的内容放在玻璃板下面,包括浏览器,图片,视频等内容。
2 玻璃提供穿透的功能,可以将鼠标的事件完全回调给下层窗口,不影响下层窗口的使用。

已实现的功能:

1 常规的图形(矩形,椭圆,直线,箭头,三角形,菱形)
2 图形的二次编辑(移动,删除,添加)
3 图形保存功能,通过序列化反序列化可以将图形保存成json
4 由于本窗口是透明窗口,可以覆盖在其他的窗口上面,实现标注功能

效果图

效果

Git地址: canvas_view

注:测试demo没有写太详细,可以自己摸索

部分接口:


class EXPORT CanvasView
{
public:
    //回调第三方的接口
    class Delegate
    {
    public:
        //控件的更改 添加 删除 移动等操作
        virtual void OnControlChange(ChangeType type,const char *context) {};

        virtual void OnAddImage(const char*url, const char *context) {};

        //发送添加的笔迹数据给第三方调用者
        virtual void SendPenPath(InnerPenInfo &penInfo) {};

        //鼠标以及按键事件的回传
        virtual void OnMouseKeyMessage(unsigned int uMsg, unsigned int wParam,long lParam) {};

        virtual void OnMouseWheelMessage(unsigned int uMsg, unsigned int wParam, long lParam) {};

        virtual ~Delegate(){}

    };

    //供第三方调用的接口剖
public: 
    virtual ~CanvasView(){}

    virtual void SetPenColor(DWORD color) = 0;

    virtual void SetPenSize( int pen_size ) = 0;

    //设置选择的工具
    virtual void SelectTools(ToolTypes tool_type) = 0;

    //创建画布
    virtual bool CreateCanvas(int width, int height) = 0;

    //重新设置映射范围 
    virtual void ResetCanvas(int width, int height) = 0;

    //设置画板的位置
    virtual bool SetCanvasViewPos(int x, int y, int width, int height) = 0;

    virtual long GetCanvasViewHwnd() = 0;
    
    virtual void PageTo(int page) = 0;

    //设置纵向偏移量  scroll  true 滚动条引起的 false 翻页引起的
    virtual void SetOffset(int offsety, bool scroll=true) = 0;

    virtual void AddImage(char *url, char *filepath,char *info) = 0;

    virtual void Hide() = 0;
    virtual void Show() = 0;
    
	//序列化
	virtual std::string Marshal() = 0;
	//反序列化
    virtual void UnMarshal(std::string grapics_data) = 0;
    
    virtual void ChangeControls(ChangeType type, std::string change_infos) = 0;

    virtual void SetEditable(bool enable) = 0;

};
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值