控件保持多种绘图状态的做法

基本思路

#pragma once
#include struct IPainter
{
    void Paint() {}
};

class Element
{
    void SetPainterState(int dwState, IPainter* pPainter)
    {
        m_mapStatePainter[dwState]=pPainter;

        if(dwState==m_dwState)
        {
            GoToState(dwState);
        }
    }

    IPainter* GetPainterState(int dwState)
    {
        return m_mapStatePainter[m_dwState];
    }

    int GetState()
    {
        return m_dwState;
    }

    void GoToState(int dwState)
    {
        m_dwState=dwState;

        //InvalidateRect();
    }

    void Paint()
    {
        m_mapStatePainter[m_dwState]->Paint();
    }

private:
    int        m_dwState;
    std::map<int,IPainter*>     m_mapStatePainter;
};

Original: https://www.cnblogs.com/Clingingboy/p/3435601.html
Author: Clingingboy
Title: 控件保持多种绘图状态的做法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551439/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • AIX系统下挂载外置存储

    连接盘柜后在盘柜里映射好分区。 1.扫描硬件才能发现盘柜映射的容量 ,命令cfgmgr 2、查看在 AIX 系统下能否认到盘柜的分区。 命令:lsdev -Cc disk 3、查看…

    技术杂谈 2023年6月21日
    098
  • 自写一个生成ID的工具类

    平时项目中只要涉及表,那么一定能接触到众多各式各样的ID编号,博主整理一些常用的ID格式,整合一个ID生成工具类,供大家参考,如果有什么不足指出,烦请留言批评指正,尽量改正,感激不…

    技术杂谈 2023年7月25日
    0235
  • Docker-数据卷管理

    Docker-数据卷管理 1.利用数据卷和数据容器管理数 管理Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器( DataVolumes Co…

    技术杂谈 2023年7月10日
    072
  • 使用Spring AOP实现系统操作日志记录

    Aspect: 切面,在Spring中使用@Aspect注解标识,该类封装一些具体的操作,例如记录日志。 Joinpoint: 连接点,是指的是在程序运行过程中的某个阶段。 Poi…

    技术杂谈 2023年6月21日
    097
  • Codeforces Round #616 (Div. 2) C. Mind Control 博弈论 枚举

    C. Mind Control time limit per test1 secondmemory limit per test256 megabytes You and your…

    技术杂谈 2023年6月1日
    094
  • MySQL的简单实用 手把手教学

    MySQL的使用 1.登陆数据库 打开terminal 在终端根文件目录下输入 /usr/local/mysql/bin/mysql -u root -p 接着输入管理员密码 2….

    技术杂谈 2023年7月25日
    076
  • Flink CDC 与Hudi整合

    之前写过Flink CDC sink 到 Iceberg中,本篇主要实践如何CDC到hudi中. 什么是hudi? Hudi is a rich platform to build…

    技术杂谈 2023年7月10日
    0118
  • 力扣刷题-1两数求和

    自己只会暴力求解,看见大佬的进阶求解,感觉tql,题源链接 Original: https://www.cnblogs.com/chaos2022/p/16608877.htmlA…

    技术杂谈 2023年7月23日
    084
  • [css] css实现文字竖向排列以及设置间距

    想要实现竖向排列文字,设置间距 只需要下面两个属性 writing-mode: vertical-rl;//从右往左排 vertical-lr是从左往右排 letter-spaci…

    技术杂谈 2023年6月1日
    088
  • 简单易懂讲IO

    流式 IO 是传统 IO,通过构造输入输出流,讲信息从一个地方读取,输出到另一个地方。常见的有读取文件以及写入文件。 基本 API 流失 IO 基本可以分为两个门派,一个以 Inp…

    技术杂谈 2023年7月25日
    093
  • Docker-网络模式

    Docker-网络模式 1.Docker网络模式概述 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Doc…

    技术杂谈 2023年7月10日
    086
  • 59_Scala 中的 Queue

    1. mutable.Queue API object ScalaQueue extends App { //创建 mutable 队列 var queue: mutable.Qu…

    技术杂谈 2023年7月10日
    080
  • 动物期末代码

    Animal.java public abstract class Animal { public abstract void cry(); public abstract Str…

    技术杂谈 2023年6月21日
    097
  • AOP与注解的那些事儿~

    前言 什么是AOP? AOP的相关概念(面试常客) Spring Boot 如何整合AOP自定义一个注解? 使用拦截器如何自定义注解? 内部调用导致AOP注解失效 总结 注解相信大…

    技术杂谈 2023年7月24日
    085
  • 几种专业的虚拟仿真开发工具

    GL Studio GL Studio是美国DiSTI公司的旗舰产品,它是一个独立平台的快速原型工具,用来创建实时的、照片级别的、可交互的图形界面,既可以用于仿真,又可以用于实际装…

    技术杂谈 2023年7月23日
    078
  • AppScan下载、安装、使用教程

    AppScan9.0.3.6破解版教程与免费下载 AppScan是一个Web漏洞扫描程序,主要适用于Windows系统。 百度网盘链接:https://pan.baidu.com/…

    技术杂谈 2023年5月31日
    0128
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球