基于MCF setPixel函数的画板程序(一)架构设计

2023-12-08 01:20

本文主要是介绍基于MCF setPixel函数的画板程序(一)架构设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

流程设计
这里写图片描述
这里写图片描述
类设计
DrawElement类

#pragma once
#include <vector>
using namespace std;
class PaintElement 
{
private:std::vector<CPoint> paintLine;COLORREF color;int weight;int mod;
public :void AddPoint(CPoint src);void Set(COLORREF in_color,int in_weight);void DrawPaint(CDC *pDC);
};
class PointElement
{
private:CPoint postion;COLORREF color;int weight;int mod;//线型
public:void CreatPoint(CPoint in_Point, COLORREF in_Color, int in_Weight);void CreatPoint(CPoint in_Point, COLORREF in_Color, int in_Weight, int in_Mod);void DrawPoint(CDC *pDC);
};
class LineElement 
{
private:CPoint startPoint;CPoint endPoint;COLORREF color;int weight;int mod;
public ://Set optionvoid CreatLine(CPoint sPoint,CPoint ePoint,COLORREF in_Color,int in_Weight);//Draw Optionvoid LineDraw(CDC *pDC);
};
class RectElement 
{
private:CPoint leftUp;CPoint rightDown;COLORREF color;int weight;int mod;
public:void CreatRect(CPoint sPoint, CPoint ePoint, COLORREF in_Color, int in_Weight);void RectDraw(CDC *pDC);
};
class DrawManage 
{
private:std::vector<PointElement> pointSet;std::vector<LineElement> lineSet; std::vector<RectElement> rectSet;std::vector<PaintElement>paintSet;//Set Option
public :DrawManage();~DrawManage();//Data Optionvoid SetClear();void PointSetPushBack(PointElement src);void LineSetPushBack(LineElement src);void RectSetPushBack(RectElement src);void PaintSetPushBack(PaintElement src);//Draw Optionvoid SetDraw(CDC *pDC);void PointSetDraw(CDC *pDC);void LineSetDraw(CDC *pDC);void RectSetDraw(CDC *pDC);void PaintSetDraw(CDC *pDC);
};

SeletedMode类

#pragma once
enum UserSelectedMod
{Draw=0,Pick,Erase,Break
};
enum DrawMod 
{Point=0,Line,Rect,Circle,Besiel,Paint
};
enum PickMod  {};
enum EraseMod {};
enum BreakMod {};
class SelectMod
{public:SelectMod();~SelectMod();public:UserSelectedMod userSelectMod;DrawMod drawMod;//others
}; 

其他界面类省略

void CSketchpadView::OnDraw(CDC* pDC)
{CSketchpadDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;//重画所有图集drawManage.SetDraw(pDC);
}

代码链接
https://github.com/LLDCoder/Sketchpad

这篇关于基于MCF setPixel函数的画板程序(一)架构设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中