Solid

MFC图形编辑界面工具

房东的猫 提交于 2020-08-15 16:50:41
//2020年6月17 更新 这篇博客最近好像挺火?不少师弟师妹咨询我MFC的内容,额,博主很久也没有用MFC搞事情了,现在甚至都没有开发环境,加上到期末了,事情很多,实在没有精力回顾帮大家解决问题,今年这种情况特殊,我也很能理解18级的师弟师妹们,教授实训课的应该还是张帆老师吧,很好的老师,可以多向他请教,B站好像也有相关的教程,方法总比困难多,加油! 一、背景 喔,五天的实训终于结束了,学校安排的这次实训课名称叫高级程序设计实训,但在我看来,主要是学习了Visual C++ .NET所提供的MFC(Microsoft Foundation Class)库所提供的类及其功能函数的使用。写这一篇博客的目的是针对实训中出现的问题做一些说明,方便以后查看,并且对这次实训做一些总结。这一次的实训对我来说其实挺难受的,真正用来学习使用VS和MFC的时间只有三天,加上下个周是考试周,还有几门课没有复习完,这几天基本上是连轴转,中午也泡在实验室里,唉啊还是自己太菜了。最后我们需要提交一个课程设计程序,因为时间的原因,我选择了最简单的图形界面编辑工具,这个程序其实在C++的课程设计上就有这个,但当时我还不会windows图形界面的编程,现在想想这两个课程设计其实完全可以是一份(捂脸)。 最后做出来的界面是这样的: 在功能上: 能够在 windows 的界面下画图,能够画直线、空心矩形、、圆角矩形

[5+1]开闭原则(二)

落花浮王杯 提交于 2020-08-15 16:44:40
[5+1]开闭原则(二) 前言 面向对象的SOLID设计原则,外加一个迪米特法则,就是我们常说的5+1设计原则。 ↑ 五个,再加一个,就是5+1个。哈哈哈。 这六个设计原则的位置有点不上不下。论原则性和理论指导意义,它们不如封装继承抽象或者高内聚低耦合,所以在写代码或者code review的时候,它们很难成为“应该这样做”或者“不应该这样做”的一个有说服力的理由。论灵活性和实践操作指南,它们又不如设计模式或者架构模式,所以即使你能说出来某段代码违反了某项原则,常常也很难明确指出错在哪儿、要怎么改。 所以,这里来讨论讨论这六条设计原则的“为什么”和“怎么做”。顺带,作为面向对象设计思想的一环,这里也想聊聊它们与抽象、高内聚低耦合、封装继承多态之间的关系。 [5+1]开闭原则(一) 看上一篇,请这边走。 开闭原则与面向对象 虽然我一直在从项目管理的角度来理解和讨论面向对象思想,但是二者还是存在不少区别的。例如,二者的项目成本就有很大的不同。 绝大多数项目的成本都有这样一个特点:新建成本比维护成本更高。例如,盖房子的成本高,物业管理的成本低;买房子的成本高,装修的成本低;造车、买车的成本高,维护保养的成本低;等等等等。这里的“维护”也包括了新增或修改,例如,研发一种新飞机的成本显然要远远高于在现有机型上增增改改,不然的话,歼七姬怎么会被改得连亲妈都不认识了呢=。= 但是

5.标签篇:audio和video

大城市里の小女人 提交于 2020-08-15 07:13:17
# 5.标签篇:audio和video - audio 和 video ```html <style> * { margin:0; padding:0; } .video_player{ position:relative; width:1000px; height:500px; margin:0 auto; } video{ position:absolute; width:1000px; height:500px; left:0; top:0; } .menu{ position:absolute; width:100%; height:50px; background:rgba(0,0,0,.5); bottom:0; display:none; } .play{ position:absolute; width:60px; height:30px; border:1px solid white; text-align:center; line-height:30px; border-radius:10px; margin:auto 0 auto 20px; top:0; bottom:0; cursor:pointer; } .time{ position:absolute; width:100px; height:30px; text-align:center; line

Qt开源作品17-IP地址输入控件

大兔子大兔子 提交于 2020-08-15 07:07:28
一、前言 这个IP地址输入框控件,估计写烂了,网上随便一搜索,保证一大堆,估计也是因为这个控件太容易了,非常适合新手练手,一般的思路都是用4个qlineedit控件拼起来,然后每个输入框设置正则表达式过滤只能输入3位数字,然后安装事件过滤器识别回车自动跳到下一个输入框。关于如何设置正则表达式过滤,这个可以搜索查到,本人也不大懂这个规则,貌似还有专门的书籍专门介绍正则表达式,可能这块非常强大。 主要功能: 可设置IP地址,自动填入框 可清空IP地址 支持按下小圆点自动切换 支持退格键自动切换 支持IP地址过滤 可设置背景色/边框颜色/边框圆角角度 二、代码思路 IPAddress::IPAddress(QWidget *parent) : QWidget(parent) { bgColor = "#FFFFFF"; borderColor = "#A6B5B8"; borderRadius = 3; //用于显示小圆点的标签,居中对齐 labDot1 = new QLabel; labDot1->setAlignment(Qt::AlignCenter); labDot1->setText("."); labDot2 = new QLabel; labDot2->setAlignment(Qt::AlignCenter); labDot2->setText("."); labDot3

flex布局语法+实例

a 夏天 提交于 2020-08-15 05:38:26
一、什么是flex布局   flex 是 flexible box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 flex 布局。 你可以将前端页面想象成一个巨大的容器,里面装满了各式各样的盒子元素,为了方便元素排列布局,css引入弹性布局。即设置了弹性布局的元素,他的大小和对齐方式将更加灵活的随着他所处空间的大小而改变。 任何元素都可以使用flex布局,不区分行内、块级元素。注意:webkit 内核的浏览器,必须加上-webkit前缀。且设为 flex 布局以后, 子元素的float、clear和vertical-align属性将失效 。 二、flex布局中的基本概念   1.容器     采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。我更喜欢称为父容器和子容器。容器具有这样的特点:父容器可以统一设置子容器的排列方式,子容器也可以单独设置自身的排列方式, 如果两者同时设置,以子容器的设置为准。   2.轴线     容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end

【融职教育】Web前端学习 第2章 网页重构6 盒子模型

百般思念 提交于 2020-08-15 05:12:42
一、盒子模型概述 我们可以把一个网页分解成一个个区域,大的区域内部可以嵌套小的区域,就像融职教育的首页一样。 红色的区域是最大的区域,整个网页由三部分红色区域组成,蓝色区域在红色区域之中,绿色区域最小。每个区域都可以看做一个盒子,一个网页就是由一个个大大小小的盒子嵌套而成。 盒子之间或内外是有边距的,通过以下属性控制盒子的边距 margin:外边距 padding:内边距 盒子模型还会涉及到我们之前学过的一个属性 border:设置元素的边框 二、盒子模型属性讲解 margin margin属性可以控制元素的外边距,简单的说就是设置margin的这个元素与其相邻的元素或外部容器元素的距离,对应有四个属性,上下左右: margin-top:上外边距 margin-bottom:下外边距 margin-left:左外边距 margin-right:右外边距 我们以margin-top属性为例,实例代码如下所示: 1 .box1{ 2 width:300px; 3 height:300px; 4 background-color: #f00; 5 } 6 .box2{ 7 width:300px; 8 height:300px; 9 background-color: #0f0; 10 margin-top:50px; 11 margin-left:80px; 12 } 如代码所示

《Web前端技术H5+CSS3》笔记--第六章 盒子模型[云图智联]

百般思念 提交于 2020-08-14 21:17:26
所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。 1.1 盒子模型 在学习盒子模型之前,先来看一个生活中的例子。假如墙上排列着几幅画。对于每幅画来说,都有一个边框,在英文中称为border;每个画框中,画和边框通常都会有一定的距离,这个距离称为内边距,在英文中称为padding;每一幅画间也不是紧挨着的,也存在一些距离称为外边距,在英文中称为margin。 在CSS中,一个独立的盒子模型由content(页面内容)、border(边框)、padding(内边距)、margin(外边距)四部分组成 1.content:位于最中间,页面的主要显示内容,也就是这幅画的本身 2.border:位于内边距外面,如果没有内边距就是包着内容的外框。它一般具有一定的厚度,也就是这幅画的画框 3.padding:位于边框内部的空隙,是内容与边框的距离,也就是画框和图之画之间的空隙 4.margin:位于边框内部空隙,边框外面周围的距离,也就是每幅画之间的空隙 1.1.1 边框 边框(border)有三个属性,分别是color(颜色)、width(粗细)和style(样式)。在网页中设置边框样式时

自己用的博客园主题分享(博客园美化diy)

你说的曾经没有我的故事 提交于 2020-08-14 14:42:38
本博客主题分享,算不上特别好看吧,但是比博客园原来的好看一些,我自己觉得!不接受反驳 选择主题为:(然后保存) 页面定制css代码 /*溢出隐藏设置*/ #topics, #mainContent { overflow: visible; } #postDesc { float: none; } #gotop-fixed .call i{ display: inline-block !important; line-height: 20px !important; } #gotop-fixed .call{ background-color: #457CE6 !important; } #gotop-fixed .goTop{ background-color: #457CE6 !important; opacity: 0.8; } @media screen and (max-width: 500px){ body{ color: red; } #page_begin_html a{ display: none; } } #header { height:37px; width:100%; background-color:#ffffff !important; transition:height 0.3s; -moz-transition:height 0.3s; /*

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第5章CSS盒子模型

僤鯓⒐⒋嵵緔 提交于 2020-08-14 12:01:31
本教程案例在线演示 有路网PC端 有路网移动端 教程配套源码资源 教程配套源码资源 div div 可定义文档中的分区(division)。 div 标签可以把网页分割为独立的、不同的部分。 可以看成以下结构: div不像 h1,p标签,没有任何默认样式,其主要作用是标识网页上的某块区域。常见做法是通过给div元素加上id或class,然后通过css选中某个div,对其进行样式美化。 <div class="demo">我是一个div</div> <style> .demo{ color:red; font-size: 20px; } </style> 每个div可以看成一个盒子 一个盒子中主要的属性有5个:width、height、padding、border、margin。如下: width:内容的宽度。CSS中 width 指的是内容的宽度,而不是盒子的宽度。盒子的宽度=内容宽度+padding+border height:内容的高度。CSS中 height 指的是内容的高度,而不是盒子的高度。盒子的高度=内容高度+padding+border padding:内边距。 border:边框。 margin:外边距。 元素宽高 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title<

3.标签篇:canvas

丶灬走出姿态 提交于 2020-08-14 10:31:46
# 3.标签篇:canvas - 1. 语义化标签 都是块盒 <header></header>:页头 <footer></footer>:页脚 <nav></nav>:导航 <article></article>:用于文章,可以直接被引用拿走的 <section></section>:用于段落 <aside></aside>:侧边栏 - 2. canvas <canvas></canvas> ```html <style> #can{ width:500px; height:300px; border:1px solid black; } </style> <!--canvas的大小要在行间样式上写width和height--> <canvas id="can" width="500px" height="300px"><canvas> <script> var canvas = document.getElementById("can"); var ctx = canvas.getContext("2d");//获得画笔 //画一条线 ctx.lineWidth = 10;//设置线的粗细 ctx.moveTo(100, 100);//起点 ctx.lineTo(200, 100);//终点 ctx.lineTo(200, 200);//终点 //ctx.closePath()