【MFC】计算机图形学实验:熟悉开发环境及工具(代码)

实验内容: 

【MFC】计算机图形学实验1:熟悉开发环境及工具_绘制多义线mfc-CSDN博客

 画笔和字体只给出两处代码:

//创建刷子,设置填充色为黑色 
CBrush NewBrush;
NewBrush.CreateSolidBrush(RGB(0, 0, 0));
pDC->SelectObject(&NewBrush);
//创建画笔,设置为实线,宽度为 4 像素,黑色
CPen NewPen;
NewPen.CreatePen(PS_SOLID, 4, RGB(0, 0, 0));
pDC->SelectObject(&NewPen);
//删除原来的画笔并重新设置为黑色虚线
NewPen.DeleteObject();
NewPen.CreatePen(PS_DASH, 1, RGB(0, 0, 0));
pDC->SelectObject(&NewPen);
//创建逻辑字体,字体高度为 22,显示角度为 75 度,字体使用 Arial,宽度默认
newfont.CreateFont(22,0,750,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PR
ECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,_T("Arial"));
//删除原有字体并重新设置显示角度为-22.5
newfont.DeleteObject();
newfont.CreateFont(22,0,-225,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_P
RECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH| FF_SWISS,_T("Arial"));

 圆模块:

//左圆
x1 = x0 - 56*8, y1=y0-25*8, x2=x0-6*8, y2 =y0+25 * 8;
pDC->Ellipse(x1, y1, x2, y2 );
//右大圆
x1 = x0 + (31 - 19) * 8, y1 = y0 - 19 * 8, x2 = x0 + (31 +
19) * 8, y2 = y0 + 19 * 8;
pDC->Ellipse(x1, y1, x2, y2);
//右小圆
x1 = x0 + (31 - 11) * 8, y1 = y0 - 11 * 8, x2 = x0 + (31 +
11) * 8, y2 = y0 + 11 * 8;
pDC->Ellipse(x1, y1, x2, y2);
//画上方圆弧
//获取圆心三角形左下角的正余弦值
cosx = (50 * 50.0 - 44.0 * 44 + 62 * 62.0) / (2 * 50.0 * 62.0);
sinx = sin(acos(cosx));
//计算上圆弧的圆心坐标并绘制
double x7 = 50.0* 8 * cosx+x0-31* 8, y7 = -50.0* 8 * sinx + y0;
pDC->Arc(x7-25* 8,y7-25* 8,x7 + 25* 8,y7 +25* 8,x0-31* 8,y0, x0+31*8,y0);//画下方圆弧
//获取圆心三角形左下角的正余弦值
double a8 = 94 - 25, b8 = 94 - 19;
cosx = (a8 * a8 - b8 * b8 + 62 * 62.0) / (2 * a8 * 62.0);
sinx = sin(acos(cosx));
//计算下圆弧的圆心坐标并绘制
double x8 = a8* 8 * cosx + x0 - 31* 8, y8 =-a8* 8 * sinx + y0;
pDC->Arc(x8 - 94* 8, y8 - 94* 8, x8 + 94* 8, y8 + 94* 8, x0 - 3
1* 8, y0, x0 + 31* 8, y0);

直线模块 :

//画虚线
NewPen.DeleteObject();
NewPen.CreatePen(PS_DASH, 1, RGB(0, 0, 0));// 黑色虚线
pDC->SelectObject(&NewPen); //确定边框的颜色
//画辅助线,竖直贯穿左圆
pDC->MoveTo(points8[0].x, points8[0].y-6.5*8-6.5*8);
pDC->LineTo(points8[4].x, points8[4].y + 6.5 * 8+11.5*8);
//画辅助线,竖直贯穿右圆
pDC->MoveTo(x0 + 31 * 8, points8[0].y - 6.5 * 8 - 6.5 * 8);
pDC->LineTo(x0 + 31 * 8, points8[4].y + 6.5 * 8 + 11.5 * 8);
/画辅助线,水平贯穿两个圆
pDC->MoveTo(x9, y0);
pDC->LineTo(x0 + (31 + 19) * 8+ 6 * 8, y0);//画虚线
NewPen.DeleteObject();
NewPen.CreatePen(PS_DASH, 1, RGB(0, 0, 0));// 黑色虚线
pDC->SelectObject(&NewPen); //确定边框的颜色
//画辅助线,竖直贯穿左圆
pDC->MoveTo(points8[0].x, points8[0].y-6.5*8-6.5*8);
pDC->LineTo(points8[4].x, points8[4].y + 6.5 * 8+11.5*8);
//画辅助线,竖直贯穿右圆
pDC->MoveTo(x0 + 31 * 8, points8[0].y - 6.5 * 8 - 6.5 * 8);
pDC->LineTo(x0 + 31 * 8, points8[4].y + 6.5 * 8 + 11.5 * 8);
/画辅助线,水平贯穿两个圆
pDC->MoveTo(x9, y0);
pDC->LineTo(x0 + (31 + 19) * 8+ 6 * 8, y0);

 多边形模块:

//顶上
x4 = x0 - 31 * 8, y4= y0 - 18.5 * 8;
points8[0] = CPoint(x4, y4);
//右上
x3 = x0 - 31 * 8 + 18.5 * 8 * cos(45 / 360.0 * (pai * 2)), y3
= y0 - 18.5 * 8 * sin(45 / 360.0 * (pai * 2));
points8[1] = CPoint(x3, y3);
//右
x4 = x0 - 31 * 8 +18.5 * 8, y4 = y0;
points8[2] = CPoint(x4, y4);
//右下
x3 = x0 - 31 * 8 + 18.5 * 8 * cos(45 / 360.0 * (pai * 2)), y3
= y0 + 18.5 * 8 * sin(45 / 360.0 * (pai * 2));
points8[3] = CPoint(x3, y3);
//下
x4 = x0 - 31 * 8, y4 = y0 + 18.5 * 8;
points8[4] = CPoint(x4, y4);
//左下
x5=x0 - 31 * 8- 18.5 * 8* cos(45 / 360.0 * (pai * 2)),y5=y0 + 18.
5 * 8* sin(45 / 360.0 * (pai * 2));
points8[5] = CPoint(x5, y5);
//左
x6=x0 - 31* 8-18.5* 8,y6=y0;
points8[6] = CPoint(x6, y6);
//左上
x5=x0 - 31 * 8- 18.5 * 8* cos(45 / 360.0 * (pai * 2)),y5=y0 - 18.
5 * 8* sin(45 / 360.0 * (pai * 2));
points8[7] = CPoint(x5, y5);
//绘制八边形
pDC->Polygon(points8, 8);

箭头模块:

//上圆弧上的箭头绘制
cosx = cos(75/180.0*pai); sinx = sin(75/ 180.0 * pai);
double xuparc= x7-25*8*cosx, yuparc = y7 + 25*8*sinx;//上圆弧
double degree = 60.0 / 180 * pai;
points[0].x = xuparc, points[0].y = yuparc;
points[1].x = xuparc + 3.5 * 8 * cos(degree), points[1].y = yuparc -
3.5 * 8 * sin(degree);
points[2].x = xuparc , points[2].y = yuparc - 3.5 * 8 ;
pDC->Polygon(points, 3);
pDC->MoveTo((points[1].x + points[2].x) / 2,(points[1].y + points[2].y)/2);
pDC->LineTo(x7, y7);
//下圆弧上的箭头绘制
double xdarc=8 + 94 * 8 * cosx,ydarc = y8 + 94 * 8 * sinx;
degree = 60.0 / 180 * pai;
points[0].x = xdarc, points[0].y = ydarc;
points[1].x = xdarc - 3.5 * 8 * cos(degree), points[1].y = ydarc - 3
.5 * 8 * sin(degree);
points[2].x = xdarc, points[2].y = ydarc - 3.5 * 8;
pDC->Polygon(points, 3);
x2 = x8 + 83 * 8 * cosx,y2 = y8 + 83 * 8 * sinx;
pDC->MoveTo((points[1].x + points[2].x) / 2, (points[1].y + points[2].y)
/ 2);
pDC->LineTo(x2, y2);//标注八边形上下顶点距离长度的两条水平实线和箭头线
x4 = points8[0].x, y4 = points8[0].y; //多边形上方顶点
pDC->MoveTo(x4, y4);
pDC->LineTo(x0 - 56 * 8 - 7 * 8, y4);
//绘制上方箭头
x9 = x0 - 56 * 8 - 6 * 8, y9 = y4 + 3 * 8;
points[1] = CPoint(x9, y9);
x9 = x0 - 56 * 8 - 4 * 8, y9 = y4 + 3 * 8;
points[2] = CPoint(x9, y9);
x9 = x0 - 56 * 8 - 5 * 8, y9 = y4;
points[0] = CPoint(x9, y9);
pDC->Polygon(points, 3);
x4 = points8[4].x, y4 = points8[4].y; //多边形下方顶点
pDC->MoveTo(x4, y4);
pDC->LineTo(x0 - 56 * 8 - 7 * 8, y4);
//绘制下方箭头
x10 = x0 - 56 * 8 - 6 * 8, y10 = y4-3*8;
points[1] = CPoint(x10, y10);
x10 = x0 - 56 * 8 - 4 * 8, y10 = y4 - 3 * 8;
points[2] = CPoint(x10, y10);
x10= x0 - 56 * 8 - 5 * 8, y10 = y4;
points[0] = CPoint(x10, y10);
pDC->Polygon(points, 3);
//连接箭头
pDC->MoveTo(x9, y9+ 3 * 8);
pDC->LineTo(x10, y10 - 3 * 8);
//两个圆心间距离的箭头
x1 = x0 - 31 * 8+3*8, y1 += 9 * 8;
points[0] = CPoint(x1, y1);
x1 = x0 - 31 * 8 + 3 * 8, y1 += 2 * 8;
points[1] = CPoint(x1, y1);
x1 = x0 - 31 * 8 , y1 -= 8;
points[2] = CPoint(x1, y1);
pDC->Polygon(points, 3);
x2 = x0 + 31 * 8, y2 = y1;
points[0] = CPoint(x2, y2);
x2 = x0 + 31 * 8-3*8, y2 = y1-8;
points[1] = CPoint(x2, y2);
y2 = y1 + 8;
points[2] = CPoint(x2, y2);
pDC->Polygon(points, 3);
//连接箭头,两个圆心间距离的箭头
pDC->MoveTo(x1 + 3 * 8, y1);
pDC->LineTo(x2, y1);
double xd= (x1 + 3 * 8+x2)/2, yd=y1;//存下辅助线的中点
//右小圆的箭头线
x1 = x0 + 31 * 8, y1 = y0;//右小圆圆心
cosx = cos(45 / 180.0 * pai);//获取小圆辅助线与水平线的角度余弦值
sinx = sin(45 / 180.0 * pai);
//贯穿右小圆 45 度实线
pDC->MoveTo(x1 + 11 * 8 * cosx, y1 - 11 * 8 * sinx);
pDC->LineTo(x1 - 11 * 8 * cosx, y1 + 11 * 8 * sinx);
//小圆画箭头左下,45 度
x1 = x1 - 11 * 8 * cosx, y1 = y1 + 11 * 8 * sinx;
degree = 30.0/180*pai;//箭头三角形角度
points[0].x = x1 , points[0].y = y1 ;
points[1].x = x1 -3.5*8*cos(degree), points[1].y = y1 +3.5*8*sin(degree);
points[2].x = x1 - 3.5 * 8 * cos(degree+30.0/180*pai), points[2].y = y
1 + 3.5 * 8 * sin(degree+30.0 / 180 * pai);
pDC->Polygon(points, 3);
x1 = x0 + 31 * 8, y1 = y0;//右小圆圆心
pDC->MoveTo((points[1].x+ points[2].x)/2, (points[1].y + points[2].y) / 2);
pDC->LineTo(x1 - 17 * 8 * cosx, y1 + 17 * 8 * sinx);
//小圆画箭头右上
x1 = x1 + 11 * 8 * cosx, y1 = y1 - 11 * 8 * sinx;
points[0].x = x1, points[0].y = y1;
points[1].x = x1 + 3.5 * 8 * cos(degree), points[1].y = y1 - 3.5 *
8 * sin(degree);
points[2].x = x1 + 3.5 * 8 * cos(degree + 30.0 / 180 * pai), point
s[2].y = y1 - 3.5 * 8 * sin(degree + 30.0 / 180 * pai);
pDC->Polygon(points, 3);
x1 = x0 + 31 * 8, y1 = y0;//右小圆圆心
pDC->MoveTo((points[1].x + points[2].x) / 2, (points[1].y + points[2].y)
/ 2);
pDC->LineTo(x1 + 22 * 8 * cosx, y1 - 22 * 8 * sinx);
//延伸出的水平线
DC->MoveTo(x1 + 22 * 8 * cosx+5*8, y1 - 22 * 8 * sinx);
pDC->LineTo(x1 + 22 * 8 * cosx, y1 - 22 * 8 * sinx);

//右大圆的箭头线
x1 = x0 + (31) * 8, y1 = y0 ;//右大圆圆心
cosx = cos(15 / 180.0 * pai);//获取大圆辅助线与水平线的角度余弦值
sinx = sin(15 / 180.0 * pai);
//贯穿右小圆 15 度实线
pDC->MoveTo(x1 - 19 * 8 * cosx, y1 - 19 * 8 * sinx);
pDC->LineTo(x1 + 19 * 8 * cosx, y1 + 19 * 8 * sinx);
//右大圆箭头左上,贯穿线变成 15 度
x1 = x1 -19 * 8 * cosx, y1 = y1 - 19 * 8 * sinx;
points[0].x = x1, points[0].y = y1;
points[1].x = x1 - 3.5 * 8 , points[1].y = y1;
points[2].x = x1 - 3.5 * 8 * cos(degree), points[2].y = y1 - 3.5 *
8 * sin(degree);
pDC->Polygon(points, 3);
x1 = x0 + (31) * 8, y1 = y0;//右大圆圆心
pDC->MoveTo((points[1].x + points[2].x) / 2, (points[1].y + points[2].y)
/ 2);
pDC->LineTo(x1 - 26 * 8 * cosx, y1 - 26 * 8 * sinx);
//右大圆箭头右下,贯穿线变成 15 度
x1 = x1 + 19 * 8 * cosx, y1 = y1 + 19 * 8 * sinx;
points[0].x = x1, points[0].y = y1;
points[1].x = x1 + 3.5 * 8 , points[1].y = y1;
points[2].x = x1 + 3.5 * 8 * cos(degree), points[2].y = y1 + 3.5 *
8 * sin(degree);
pDC->Polygon(points, 3);
x1 = x0 + (31) * 8, y1 = y0;//右大圆圆心
pDC->MoveTo((points[1].x + points[2].x) / 2, (points[1].y + points[2].y)
/ 2);
pDC->LineTo(x1 + 25 * 8 * cosx, y1 + 25 * 8 * sinx);
//延伸出的水平线
pDC->MoveTo(x1 + 25 * 8 * cosx, y1 + 25 * 8 * sinx);
pDC->LineTo(x1 + 25 * 8 * cosx+5*8, y1 + 25 * 8 * sinx);
//左圆圆内箭头线,22.5 度
x1 = x0 - 31 * 8, y1 = y0;//左圆
cosx = cos(22.5 / 180.0 * pai);//获取辅助线与水平线的角度余弦值
sinx = sin(22.5 / 180.0 * pai);
//箭头左上
x1 = x1 - 25 * 8 * cosx, y1 = y1 - 25 * 8 * sinx;
degree = 37.5 / 180 * pai;
points[0].x = x1, points[0].y = y1;
points[1].x = x1 + 3.5 * 8 * cos(degree), points[1].y = y1 + 3.5 *
8 * sin(degree);
degree =7.5 / 180 * pai;
points[2].x = x1 + 3.5 * 8 * cos(degree), points[2].y = y1 + 3.5 *
8 * sin(degree);
pDC->Polygon(points, 3);
double xm= (points[1].x + points[2].x) / 2, ym= (points[1].y + points[2
].y) / 2;//存箭头中点
//箭头右下
x1 = x1 + (50) * 8 * cosx, y1 = y1 + (50) * 8 * sinx;
degree = 7.5 / 180 * pai;
points[0].x = x1, points[0].y = y1;
points[1].x = x1 - 3.5 * 8 * cos(degree), points[1].y = y1 - 3.5 *
8 * sin(degree);
degree = 37.5 / 180 * pai;
points[2].x = x1 - 3.5 * 8 * cos(degree), points[2].y = y1 - 3.5 *
8 * sin(degree);
pDC->Polygon(points, 3);
//箭头连接线
pDC->MoveTo((points[1].x + points[2].x) / 2, (points[1].y + points[2].y)
/ 2);
pDC->LineTo(xm, ym);

 文本模块:

//上圆弧箭头文字
pDC->TextOut((x7 + (points[1].x + points[2].x) / 2) / 2 - 3 * 8, (y7
+ (points[1].y + points[2].y) / 2) / 2 - 4 * 8, _T("R25"), 3);
//下圆弧箭头文字
pDC->TextOut((x2 + (points[1].x + points[2].x) / 2) / 2 +3 * 8, (y2
+ (points[1].y + points[2].y) / 2) / 2 - 4 * 8, _T("R94"), 3);
//右小圆箭头文字
pDC->TextOut(x1 + 22 * 8 * cosx+8, y1 - 22 * 8 * sinx-3*8, _T("R22"
), 3);
//右大圆箭头文字
pDC->TextOut(x1 + 25 * 8 * cosx + 8, y1 + 25 * 8 * sinx - 3 *
8, _T("R38"), 3);
//左圆箭头文字
pDC->TextOut((xm+(points[1].x + points[2].x) / 2)/2-6*8, (ym+(points[1].y +
points[2].y) / 2)/2-7*8, _T("R50"), 3);
//八边形左箭头文字
pDC->TextOut(x9-4*8, y0+8+8, _T("37"), 2);
//圆心距离箭头文字
pDC->TextOut(xd, yd-25, _T("62"), 2);

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring动态定时任务异常Cron expression must consist of 6 fields

spring-context-5.3.24版本源码实例化CronTrigger 时判断了cron表达式长度必须是6,spring 4.x中已经不支持7个参数的cronin表达式了 解决方案: (1)使用别的定时框架 (2)如果涉及很多业务代码&#xff0c…

Apache Commons BCEL与Java字节码操作

第1章:Apache Commons BCEL简介 大家好,我是小黑,咱们今天来聊聊Apache Commons BCEL(Byte Code Engineering Library)。你可能会问,BCEL是什么鬼?别急,小黑这就给你娓娓道来。BCEL…

Window10 下同时安装 JDK8 和 JDK11

1、下载两个版本的JDK 从Oracle 官网下载两个版本的 JDK 文件到本地,官网下载地址:JDK 下载 | ORACLE 2、部署环境变量 为方便切换 JDK 版本,这里分别新建:JAVA_HOME、JAVA11_HOME 和 JAVA8_HOME 变量,配置内容如下…

【unity】基于Obi的绳长动态修改(ObiRopeCursor)

文章目录 一、在运行时改变绳子长度:ObiRopeCursor1.1 Cursor Mu(光标μ)1.2 Source Mu(源μ)1.3 Direction(方向) 一、在运行时改变绳子长度:ObiRopeCursor Obi提供了一个非常通用的组件来在运行时修改绳…

Vue2.Hello World

步骤: 准备容器引包(开发版本/生产版本)创建实例new Vue()添加配置项 el指定挂载点data提供数据 准备容器 就是新建一个div标签 引包 vue2版本中文文档:https://v2.cn.vuejs.org/v2/guide/ 尝试 Vue.js 最简单的方法是使用 …

JS运行机制、Event Loop

1、JS运行机制 JS最大的特点就是单线程,所以他同一时间只能做一件事情。使单线程不阻塞,就是事件循环。 在JS当中分为两种任务: 同步任务:立即执行的任务,一般放在主线程中(主执行栈)。异步任…

Avalonia学习(十七)-CEF

今天开始继续Avalonia练习。 本节:CefNet 1.引入 CefNet.Avalonia.Eleven 2.项目引入 Program中加入 using Avalonia; using Avalonia.ReactiveUI; using Avalonia.Threading; using CefNet; using System; using System.IO; using System.Linq; using System…

webStorm打开终端Cannot open Local Terminal Failed to start [powershell.exe] in

今天webStorm打开终端显示 Cannot open Local Terminal Failed to start [powershell.exe] in D:\allproject\boosterStation 有关详细信息,请查看 IDE 日志(帮助 | 在 Explorer 中显示日志)。 解决方案: 打开设置(如下图)&a…

OEE如何为制造企业实施ISO50001提供支持

ISO50001是一项旨在帮助企业建立和实施能源管理体系的国际标准,以提高能源效率、降低能源消耗和减少环境影响。而设备OEE(设备综合效率)作为一个关键的生产效率指标,可以为企业实施ISO50001提供重要的支持。本文将介绍ISO50001能源…

C语言快速入门——高级特性

C语言高级特性 C语言高级特性函数创建和使用函数全局变量和局部变量函数参数和返回递归调用 指针什么是指针指针与数组多级指针指针数组与数组指针指针函数与函数指针 结构体、联合体和枚举创建和使用结构体结构体数组和指针联合体枚举typedef关键字 预处理文件包含系统库介绍宏…

Mysql事务transaction简介

文章目录 什么是事务针对Mysql隔离级别读未提交读提交可重复读串行化 mysql中的数据结构索引数据结构mysql中的锁种类**共享锁和独占锁**表锁、行锁(记录锁、间隙锁、临键锁) spring中的事务事务特性 什么是事务 事务是一个不可分割的数据库操作序列,也是数据库并发…

RT-DETR算法优化改进:提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好 | 2023.12.29收录

💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 RT-DETR魔术师专栏介绍: https://blo…

element中Table表格控件实现单选功能、多选功能、两种分页方式

目录 1、Table表格控件实现单选功能2、Table控件和Pagination控件实现多选和两种分页方式方法一&#xff1a;使用slice方法方法二&#xff1a;多次调用接口 1、Table表格控件实现单选功能 <template><div><!-- highlight-current-row 是否要高亮当前行 -->…

【Python机器学习】k近邻——k近邻分类

k-NN算法最简单的版本是只考虑一个最近邻&#xff0c;也就是想要预测的数据点最近的训练数据点&#xff0c;预测结果就是这个训练数据点的已知输出。 除了仅考虑最近邻&#xff0c;还可以考虑任意&#xff08;k个&#xff09;邻居&#xff0c;这也是k近邻算法名字的由来。在考…

1*2*3+3*4*5+...+99*100*101python,1加到100的程序算法python

大家好&#xff0c;本文将围绕python中123一直加到100程序怎么写展开说明&#xff0c;计算123456...100的值python是一个很多人都想弄明白的事情&#xff0c;想搞清楚计算1-23-45 … -100的值python需要先了解以下几个事情。 今天下午上python课的时候&#xff0c;老师留了一个…

佳能G3800彩色喷墨多功能一体打印机报5B00错误代码处理方法

5B00错误代码的含义 5B00错误代码是指佳能G3800打印机的“废墨仓已满”。这个废墨仓是打印机内部的一个部件&#xff0c;主要用于收集打印过程中产生的废墨。当废墨仓已满时&#xff0c;打印机就会报5B00错误代码。 佳能G3800彩色喷墨多功能一体打印机报5B00错误代码处理办法 …

大数据 MapReduce是什么?

在Hadoop问世之前&#xff0c;其实已经有了分布式计算&#xff0c;只是那个时候的分布式计算都是专用的系统&#xff0c;只能专门处理某一类计算&#xff0c;比如进行大规模数据的排序。 很显然&#xff0c;这样的系统无法复用到其他的大数据计算场景&#xff0c;每一种应用都…

大数据技术与应用开发赛项笔记

各种启动命令 修改mysql数据库编码&#xff1a;alter database shtd_result CHARACTER SET utf8; hadoop : start-all.sh hive服务&#xff1a; hive --service metastore hive 客户端 &#xff1a;hive dolphinscheduler服务&#xff1a;./bin/dolphinscheduler-daemon.sh sta…

excel公式名称管理器

1.问题 在日常使用excel的时候&#xff0c;发布一个表格文件&#xff0c;需要限制表格的某列或某行只能从我们提供的选项中选择&#xff0c;自己随便填写视为无效&#xff0c;如下图所示&#xff0c;上午的行程安排只能从"在岗"、"出差"、"病假"…

AI绘图模型不会写字的难题解决了

介绍 大家好&#xff0c;最近有个开源项目比较有意思&#xff0c;解决了图像中不支持带有中文的问题。 https://github.com/tyxsspa/AnyText。 为什么不能带有中文&#xff1f; 数据集局限 Stable Diffusion的训练数据集以英文数据为主&#xff0c;没有大量包含其他语言文本的…