当前位置: 首页 > news >正文

数据类设计_图片类设计之2_无规则图类设计(前端架构基础)

前言

        学的东西多了,要想办法用出来.C和C++是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容

引入

        接续上一篇数据类设计_图片类设计之1_矩阵类设计(前端架构基础)-CSDN博客,讨论非规则图类型的设计

无规则图的简单定义

        前面的矩阵类,有明显的特征:长,宽,行和点等属性,再根据其属性定义点集合.无规则图就是图形中的点没有规律的,可以叫做散图或者点状图.其特点是:点的无序集合. 比如打开mspaint,随手涂鸦

----上面是一些没有规则的线和点组成的图形

无规则图类型定义

        首先,图形本身是点的无序集合,但计算机在描述这个点图时需要有顺序的,因为采用行扫描,每行应该有相应的点内容.

        前一篇帖子提到了基点这个概念 ,把每张图最左,最上面的那个点(图形中画两条辅助线,相交求得)设置为基点.基点在类型设计时不用表现,在访问时才需要(算法保证基点位置).而点的位置用平面上和基点的距离(像素值的差)来表示.

        所以把无规则图类型作如下定义:


//非规则图形类
struct Unreg_pic{
    vector<Unreg_point> ups;
}
//不规则点类
struct Unreg_point{
    short x_cord;    //x坐标,相对于基点的x值
    short y_cord;    //y坐标,相对于基点的y值
    short red;
    short green;
    short blue;
}

        可以说是比较简单,也容易理解.

        计算机在存储这张图时,计算出每个点的位置和颜色,用vector的对象方法push_back添加进ups中即可,也不用多写什么.程序就像在地里捡土豆一样,一个个点作标记.

无规则图中的规则

        稍加思索,就会发现有一些无规则图,会有一点规则.最典型的是:键盘输入的字母或者数字,汉字等.当两个字的字号相同时,他们的高度是相同的.

         这是微软雅黑72号,数字1和2,他们本质上也是无规则图.

         ---题外话:赞叹一下计算机行业的前辈,字符库的建立由人一个点一个点数出来的

字符类型定义

        字符不用定义颜色,所以类型定义和前面的有一点区别


//字符图形类
struct Zifu{
    vector<Zifu_point> zps;
}
//字符点类
struct Zifu_point{
    short x_cord;    //x坐标,相对于基点的x值
    short y_cord;    //y坐标,相对于基点的y值
}

        如果要加颜色,写入场景时,在函数中使字符的点有颜色 

        分析:这种定义方法有一个缺点:所有字号大小的字符都归于一个类.

         这里有一种思路:是否每一个字符只定义一个对象,其他字号大小用某种算法来计算.如果可以的话,那就非常简单了.如果不行,那还得老老实实一个点一个点去数.

小结

        无规则图形类型的建立的思路.

        底层的东西更加枯燥,需要有兴趣去支持.当然字库是非常成熟的应用,有时候思考不为了立刻有效果,而是保持一种习惯.

预告

        半规则图形类的设计

鸣谢

        笔者另一篇帖子数据在硬件和软件中的表示-CSDN博客里有求下载链接,如果您感觉有所帮助,请帮忙点击,下载,提高等级

    


文章转载自:
http://alacarte.ciuzn.cn
http://axiologist.ciuzn.cn
http://brickmaker.ciuzn.cn
http://bba.ciuzn.cn
http://brahmanical.ciuzn.cn
http://allelic.ciuzn.cn
http://cabined.ciuzn.cn
http://bipack.ciuzn.cn
http://atween.ciuzn.cn
http://billiken.ciuzn.cn
http://bimorph.ciuzn.cn
http://acaulescent.ciuzn.cn
http://chromeplate.ciuzn.cn
http://chlordane.ciuzn.cn
http://angara.ciuzn.cn
http://backfire.ciuzn.cn
http://ambiversion.ciuzn.cn
http://ambient.ciuzn.cn
http://azury.ciuzn.cn
http://amitabha.ciuzn.cn
http://chagatai.ciuzn.cn
http://antifluoridationist.ciuzn.cn
http://asteriated.ciuzn.cn
http://arthrodesis.ciuzn.cn
http://chanterelle.ciuzn.cn
http://bookbindery.ciuzn.cn
http://agronomy.ciuzn.cn
http://childermas.ciuzn.cn
http://captainship.ciuzn.cn
http://aarp.ciuzn.cn
http://www.dtcms.com/a/59937.html

相关文章:

  • Python教程(一):基本语法、流程控制、数据容器
  • ESP8266UDP透传
  • c++ 中的 friend 关键字
  • 假设检验与置信区间在机器学习中的应用
  • 动态内存管理的了解及使用
  • Flink-DataStreamAPI-执行模式
  • C# Enumerable类 之 数据排序
  • 【项目实战】Spring AI集成DeepSeek实战指南(硅基流动平台版)
  • JSAR 基础 1.2.1 基础概念_空间小程序
  • cdn取消接口缓存
  • 2025-03-08 学习记录--C/C++-C 语言 判断一个数是否是完全平方数
  • [网络爬虫] 动态网页抓取 — 概念引入
  • 基于opencv的hsv色块检测
  • vue和easyui渲染问题
  • 代码随想录二刷|图论2
  • Java高频面试之集合-06
  • 深度链接技术解析:openinstall如何通过场景还原优化用户体验?
  • 如何利用Postman对比出新旧接口之间的差异(Diff)
  • dfs:五子棋对弈15蓝桥杯a组1题
  • 数据结构第八节:红黑树(初阶)
  • 【图灵商城项目-登录失败:密码不正确,问题已解决】
  • Python使用MyQR生成动态二维码
  • 【LangChain】理论及应用实战(2)
  • Git基础之基本操作
  • 【GPT入门】第2课 跑通第一openAI程序
  • 【C++】:STL详解 —— 红黑树封装map和set
  • 《C#上位机开发从门外到门内》1-2:上位机开发语言与工具、开发环境部署
  • 初识Bert
  • Javascript 原型和原型链
  • [项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键