第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

相关文章

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2