【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);

效果图:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

excel公式名称管理器

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

seo分享:慎重使用蜘蛛池

其实要提高搜索引擎蜘蛛的来访次数,唯一的方法还是要通过网站本身的内容更新。频繁更新有质量的内容,才能够提高蜘蛛的来访次数。如果本身内容更新不多,外部引流的蜘蛛过多,最终发现没什么内容索引,蜘蛛来访的次数也会…

x-cmd pkg | 比 du 更好用的查看磁盘空间工具:dust

目录 简介首次用户技术特点竞品和相关作品进一步探索 简介 Dust 是一个用于分析磁盘空间使用情况的命令行工具,旨在提供直观的磁盘分布信息,它的名字是由 “du” 和 Rust 编程语言组合而来。 Dust 的主要功能是提供实时的磁盘空间概览,并以…

华为HCIE-Datacom课程介绍

厦门微思网络HCIE-Datacom课程介绍 一、认证简介 HCIE-Datacom(Huawei Certified ICT Expert-Datacom)认证是华为认证体系中的顶级认证,HCIE-Datacom认证定位具备坚实的企业网络跨场景融合解决方案理论知识,能够使用华为数通产品…

数据库存储过程

存储过程(特定功能的 SQL 语句集) 一组为了完成特定功能的 SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是…

计算机视觉入门与调优

大家好啊,我是董董灿。 在 CSDN 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。 90%的问题我都回复了,但有时确实因为太忙,没顾得过来。 在这个过程中&#x…

ArrayList学生管理系统

文章目录 1.ArrayList集合和数组的优势对比:1.1 ArrayList类概述1.2 ArrayList类常用方法1.2.1 构造方法1.2.2 成员方法1.2.3 示例代码 1.3 ArrayList存储字符串并遍历1.3.1 案例需求1.3.2 代码实现 1.4 ArrayList存储学生对象并遍历1.4.1 案例需求1.4.2 代码实现 1…

福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!

千里之行,始于足下,若想提高软件编程能力,最最重要的是实践,所谓纸上得来终觉浅,绝知此事要躬行。根据相关【艾宾浩斯遗忘曲线】研究表明,如果不动手实践,记住的东西会很快忘记。 为了便于大家查…

大数据计算基础真题回忆

转载学长20 21的真题 转载链接 注:每年的课件可能会有更改,内容不一样,所以读者复习的时候以所在年份的课件为准 2020 ​ 2021 笔者2023秋 2023 都是大题,没有选择题。 改进的近似算法中,结合具体的例子说明&am…

算法训练营Day36(贪心-重叠区间)

都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙! 还是属于那种,做过了也就会了,没做过就很难想出来。 不过大家把如下三题做了之后&#…

mac远程ssh免密登录

服务器部署经常会登录到远程服务,为方便操作,提高效率对运维人员来说设置免密登录还是很有必要的。其实也是很简单,安以下操作步骤即可。 1、进入到~/.ssh目录下,确认已经生成有公钥与私钥。如果没有请执行发下命令 …

jdk动态代理与cglib代理区别1

动态代理有jdk动态代理及cglib代理&#xff0c;下面描述jdk动态代理 jdk动态代理 看了 上云 老师的视频&#xff0c;得出此理解 pom文件 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…

(Linux)虚拟机配置固定IP

Linux操作系统的IP地址是通过DHCP服务获取的&#xff0c;也就是动态获取IP地址&#xff0c;每次重启设备后都会获取一次&#xff0c;会导致IP地址频繁变更&#xff0c;为了不频繁更新映射关系&#xff0c;我们需要IP地址固定下来。 1.在VM中配置IP地址网关和网段 打开虚拟网络…

k_d树, KNN算法学习笔记_1 距离和范数

k_d树, KNN算法学习笔记_1 距离和范数 二维树中最近邻搜索的示例。这里&#xff0c;树已经构建好了&#xff0c;每个节点对应一个矩形&#xff0c;每个矩形被分割成两个相等的子矩形&#xff0c;叶子对应于包含单个点的矩形 From Wikipedia 1&#xff0e; k k k近邻法是基本且简…

【金猿CIO展】现代咨询CIO崔恩博:数字化转型,CIO不仅要懂技术和业务,更要“懂人”...

‍ 崔恩博 本文由现代咨询CIO崔恩博撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 最近几年&#xff0c;大数据行业的发展备受关注&#xff0c;尤其是2019年以后&#xff0c;随着企业…

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…

net8 golang python性能比较

net8正式版出来两个月&#xff0c;现在性能到底如何呢&#xff0c;做个简单的例子和其他语言比较一下&#xff0c;测试内容是查找1000000以内的质数&#xff0c;代码不多&#xff0c;但包含了循环计算和Math库函数调用&#xff0c;直观的看一下语言之间差距是多少&#xff0c;心…

技术学习|CDA level I 多维数据透视分析

对基于多源表的结构数据进行商业智能分析&#xff0c;可以帮助决策者从多个不同业务角度对业务行为结果进行观测&#xff0c;进而帮助决策者全面、精确地定位业务问题&#xff0c;实现商业洞察的相关内容。通过商业智能分析产出的分析成果被统称为商业智能报表&#xff0c;简称…

WinCC中的画面模板应用实例及其组态实现方法

一、 画面模板的意义引文&#xff1a;博途工控人平时在哪里技术交流博途工控人社群 在实际工程应用和WinCC画面组态中&#xff0c;经常会遇到一些功能类似&#xff0c;画面布局基本没差别的情况。比如&#xff0c;电机的启停控制和动态数据监控画面&#xff0c;如图1所示。一个…

智邦国际ERP系统 SQL注入漏洞复现

0x01 产品简介 北京智邦国际软件技术有限公司的ERP系统是一种集成化的企业资源计划&#xff08;Enterprise Resource Planning&#xff0c;简称ERP&#xff09;解决方案&#xff0c;旨在帮助企业实现高效的运营管理和资源优化。 0x02 漏洞概述 智邦国际ERP系统 GetPersonalS…