第11章 GUI Page426~427 步骤七 设置直线前景色

2023-12-24 14:52

本文主要是介绍第11章 GUI Page426~427 步骤七 设置直线前景色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运行效果:

关键代码:

接口类 IItem中新增29,30行两个设置前景色纯虚方法

//item_i.hpp 抽象“图形元素”接口定义
#ifndef ITEM_I_HPP_INCLUDED
#define ITEM_I_HPP_INCLUDED#include <wx/gdicmn.h>
#include <wx/dc.h>class IItem
{
public://作为接口,记得要有虚析构virtual ~IItem(){}//使用DC画出自己//注意:“画”的方法不应该修改对象的数据virtual void Draw(wxDC& dc) const = 0; //纯虚函数//开始在某一点上绘图virtual void OnDrawStart(wxPoint const& point) = 0; //纯虚函数//结束在某一点virtual void OnDrawEnd(wxPoint const& point) = 0; //纯虚函数//设置于取得颜色的方法,纯虚方法,
//    virtual void SetFontColor(wxColor const& color) = 0;
//    virtual wxColor const& GetFrontColor() const = 0;//书上的方法,有错误,应该为:virtual void SetForegroundColor(wxColor const& color) = 0;virtual wxColor const& GetForegroundColor() const = 0;};#endif // ITEM_I_HPP_INCLUDED

新增头文件item_with_foreground_color.hpp

类ItemWithForegroundColor作为中间层,继承类IItem, 实现两个设置前景色的方法

//item_with_foreground_color.hpp
#ifndef ITEM_WITH_FOREGROUND_COLOR_HPP_INCLUDED
#define ITEM_WITH_FOREGROUND_COLOR_HPP_INCLUDED#include "item_i.hpp"class ItemWithForegroundColor : public IItem
{
public:ItemWithForegroundColor(): _foregroundColor(*wxBLACK){}virtual void SetForegroundColor(wxColor const& color){this->_foregroundColor = color;}wxColor const& GetForegroundColor() const{return _foregroundColor;}
private:wxColor _foregroundColor;
};#endif // ITEM_WITH_FOREGROUND_COLOR_HPP_INCLUDED

LineItem类修改为:

修改LineItem类的Draw()方法

主菜单下新建 “设置菜单”,其下建立“前景色”菜单项

wxMyPainter类新增一个私有成员并初始化

为“前景色”菜单项绑定回调函数

当设置前景色时,回调函数会把选择的颜色值,传递给  _foregroundColor

在鼠标按下的函数中设置图形的前景色:

第195行的代码,会把设置的颜色,传递给ItemWithForegroundColor对象(中间层)的

_foregroundColor属性值,当创建_newItem对象时,可以用来设置画笔的颜色

这篇关于第11章 GUI Page426~427 步骤七 设置直线前景色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/532163

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

mysql重置root密码的完整步骤(适用于5.7和8.0)

《mysql重置root密码的完整步骤(适用于5.7和8.0)》:本文主要介绍mysql重置root密码的完整步骤,文中描述了如何停止MySQL服务、以管理员身份打开命令行、替换配置文件路径、修改... 目录第一步:先停止mysql服务,一定要停止!方式一:通过命令行关闭mysql服务方式二:通过服务项关闭

Servlet中配置和使用过滤器的步骤记录

《Servlet中配置和使用过滤器的步骤记录》:本文主要介绍在Servlet中配置和使用过滤器的方法,包括创建过滤器类、配置过滤器以及在Web应用中使用过滤器等步骤,文中通过代码介绍的非常详细,需... 目录创建过滤器类配置过滤器使用过滤器总结在Servlet中配置和使用过滤器主要包括创建过滤器类、配置过滤

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab