GDI+学习之路4--线条、曲线和图形(二)

C#.net GDI作曲线图 从MDB文件中读取数据做曲线图  public void initGDI()         {             //画图初始化             Bitmap bmap = new Bitmap(pcWendu.Width, pcWendu.Height);             Graphics gph = Graphics.FromImage(bmap);       ... 阅读详情

 

         10天都没有更新博文了,忙着做公司的事情。昨天终于交了,感受到做个产品的不容易。看来前期工作还是没有做够,呵呵……但总算完成了。现在可继续我的GDI+学习之路。

基数样条(Cardinal Splines)

         基数样条是一组独立的曲线按照一定的顺序连接成一条较大的曲线。样条由一组点和张力参数描述,基数样条以平滑的方式穿过数组里的每个点,在曲线上不会出现尖角和突变。下图显示一组点和穿过他们每个点的基数样条。

    基数样条在张力参数不同的时候将生成不同的曲线,下图显示了通过相同一组点集的4条基数样条,每条样条都标明了它的张力参数。注意张力系数为0的情况下相当于无限的物理张力,迫使曲线走点之间的最短路径(直线)。张力系数为1表示没有物理张力,此时样条采用最小弯程。如果张力系数大于1,此时的样条看起来就像被压扁的弹簧,被迫经过更长的路径。

需要注意的是,以上4条样条在顶点处都拥有相同的切线。

绘制基数样条的方法如下:

myGraphics.DrawCurve(&myPen, myPointArray, 3, 1.5f);

DrawCurve函数的参数分别为:Pen对象的地址、Point对象数组(存有基数样条经过的点集)、Point对象数组中点的个数、张力参数。

贝塞尔样条(Bezier Splines)

         贝塞尔样条是由四个点所确定的曲线:2个端点(p1和p2)和2个控制点(c1和c2)。曲线始于p1终于p2。曲线并不经过控制点,但是控制点扮演了磁铁的角色,将曲线往某个方向拉从而影响了曲线的走向。下图显示了贝塞尔样条和它的顶点以及控制点。

注意,曲线从p1开始向控制点c1移动。P1位置的切线是从p1到c1。同时请注意,终点p2处的切线是从c2到p2的。

绘制贝塞尔样条的方法如下:

myGraphics.DrawBezier(&myPen, 0, 0, 40, 20, 80, 150, 100, 10);

DrawBezier函数的参数为:Pen对象的地址、起始点(0,0)、两个控制点(40,20)和(80,150)、终点(100,10)。下图显示所绘制的贝塞尔样条曲线:

路径(Paths)

    路径由线条、矩形以及简单曲线等组合而成。以下基本构成块对于绘制图像非常有用。

l  Lines (线条)

l  Rectangles (矩形)

l  Ellipses (椭圆)

l  Arcs (弧线)

l  Polygons (多边形)

l  Cardinal splines (基数样条)

l  Bézier splines (贝塞尔样条)

在Microsoft Windows GDI+中,GraphicsPath对象允许您将这些基本组成部分组合成一个单独的单位。整个一组线条、矩形、多边形和曲线可以通过Graphcis类的DrawPath方法一次性绘制。下图显示的是一条有线条、弧线、贝塞尔样条以及基数样条所组成的路径。

GraphicsPath类提供如下方法用于创建一系列对象:AddLine、AddRectangle、AddEllipse、AddArc、AddPolygon、AddCurve (用于基数样条)以及AddBezier。

绘制一条路径的方法如下:

myGraphicsPath.AddLine(0, 0, 30, 20);

myGraphicsPath.AddEllipse(20, 20, 20, 40);

myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);

myGraphics.DrawPath(&myPen, &myGraphicsPath0);

DrawPath方法的参数分别为:Pen对象的地址和GraphicsPath对象地址。GraphicsPath对象存有一个线条、一个椭圆和一条贝塞尔曲线。下图所示为该路径:

另外,您也可以添加路径到路径,这允许您将已有路径组合成更大更复杂的路径。以下代码将graphicsPath1和graphicsPath2加入到myGraphicsPath中    ,AddPath方法的第二个参数用于指定新增路径是否与已有路径相连。

myGraphicsPath.AddPath(&myGraphicsPath1, FALSE);

myGraphicsPath.AddPath(&myGraphicsPath2, TRUE);

字符串和饼图也可以加入到路径中(图饼是椭圆的一部分)。下面将创建一个有弧线、基数样条、字符串和饼图组成的路径。

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);

myGraphicsPath.AddCurve(myPointArray, 3);

myGraphicsPath.AddString(L”a string in a path”, 18, &myFontFamily, 0, 24, myPointF, &myStringFormat);

myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);

myGraphicsPath.DrawPath(&myPen, &myGraphicsPath);

下图所示为这个路径。注意这个路径并没有连接起来;弧线、基数样条、字符串和饼图都是相离的。

现在就写到这里,晚上继续。

 

【学习笔记】Windows GDI绘图(一)图形概述、直线、曲线和图形 Windows GDI(Graphics Device Interface图形设备接口)绘图学习笔记 阅读详情

相关推荐

C# winform 清除由GDI绘制出来的所有线条或图形

在C#winform应用程序中,可以用GDI绘制出线条或图形。 1、在主窗体上绘制线条或图形       using (Graphics g = this.CreateGraphics())       {             g.DrawLine(Pens.Blue, new Point(10, 10), new Point(100, 100));       } 2、在指定

8475

GDI+ 绘制曲线方法总结

GDI+ 绘制曲线方法总结

编程猿来如此 2382

【视觉】GDI+、OpenGL 和 DirectX对比

和是三种不同的图形渲染技术,它们在功能、性能、使用场景以及平台支持等方面存在显著差异。

u013136510的博客 1604

C# GDI实时曲线图

GDI实时动态曲线图,无闪烁

u011756552的博客 720

掌握GDI技术,实现图形抗锯齿效果

本文还有配套的精品资源,点击获取 简介:抗锯齿技术在图像处理中至关重要,能提升图像质量使之更平滑真实。本文将深入探讨在Windows应用程序开发中如何使用GDI技术实现抗锯齿。首先介绍GDI的基础知识,然后分析抗锯齿原理和在GDI中的具体实现方法,包括文本、线条和曲线的抗锯齿处理。本文还提供了一套"AntiAlias Project",通过该示例项目,开发者可以学习如何在G...

weixin_30633869的博客 1492

C++自学指南:掌握GDI和GDI+图形编程

色彩管理是图像处理中的一个重要组成部分,特别是在图形用户界面和打印领域中。GDI+支持多种色彩模型,如RGB和CMYK。RGB(红绿蓝)模型是加色模型,常用于计算机屏幕和其他电子显示设备。它通过红、绿、蓝三原色的组合和光的加法混合生成广泛的色彩。CMYK(青、品红、黄、黑)模型是减色模型,通常用于印刷和打印行业。它使用青、品红、黄和黑色油墨吸收光线,从而形成不同的颜色。在GDI+中,根据不同的输出需求,我们可以灵活选择不同的色彩模型。

weixin_42589700的博客 1283

GDI+学习之路5--线条、曲线和图形(三)

<br /> <br />         今天更新多点吧,把线条、曲线和图形部分写完了。看起来得要有时间的紧迫感啊,呵呵……画刷和填充图形(Brushes and Filled Shapes)<br />         一个闭合图形比如矩形和椭圆包含一个边框和内部区域。边框是由Pen对象绘制,而内部区域由Brush对象进行填充。Microsoft Windows GDI+提供几种画刷类用于填充闭合图形的内部区域:SolidBrush、HatchBrush、TextureBrush、LinearGrad

backo880607的专栏 5605

VC++ GDI图形编程实践教程

本文还有配套的精品资源,点击获取 简介:VC++ GDI图形编程是一种在Windows环境下用于图形和图像处理的技术。GDI API集提供接口与硬件交互,MFC库则对其进行封装以便使用。本教程介绍了GDI编程基础,包括设备上下文(DC)、绘图对象、坐标系统、绘图函数及颜色和模式的设置。同时,探讨了GDI在用户界面设计、图形绘制、图像处理、打印支持和动画制作方面的应用,并通过...

weixin_42576410的博客 1911

GDI基础函数使用绘制线条和图形

1、 绘制一个像素点:SetPixel()。 绘制直线:MoveTo(),LineTo()。 绘制多个首尾相连的线:Polyline()。 绘制矩形:FrameRect(),Rectangle(),FillRect() ,FillSolidRect()。 绘制一个四个角是弧形的矩形:RoundRect()。 绘制圆形或椭圆:Ellipse()。 绘制弧线:

成长的味道 1万+

曲线生成算法的C#gdi+实现(贝塞尔曲线、样条曲线、B样条曲线)

曲线生成算法的C#gdi+实现(贝塞尔曲线、样条曲线、B样条曲线)

GDI+实现刻度曲线控件

该类实现一个简单的刻度曲线控件,把所有点连城一条曲线, 并且灭个点坐标处会标出该点的纵坐标值

[学习笔记] Windows编程——GDI——(九)直线和曲线

学习笔记,随时更新。如有谬误,欢迎指正。说明:红色字体。

cxsydzn的博客 845

在Rviz仿真环境中搭建传送带

<geometry><material>

qq_58268456的博客 936

GDI+学习之路3--线条、曲线和图形(一)

<br /> <br />         GDI+的矢量绘图部分被用来绘制线条、绘制曲线和填充图形。矢量图概览(Overview of Vector Graphics)<br />         Microsoft Windows GDI+在一个坐标系统中绘制线条、矩形和其它图形,你可以选择各种不同的坐标系统,默认的坐标系统原点为左上角,X轴指向右,Y轴指向下,其度量单位为像素。<br /><br />电脑显示器在一个矩形点阵(即分辨率)上创建其显示画面,这些点称为图片要素或者象素。不同的显示器其在屏幕

backo880607的专栏 5459

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’

本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。

weixin_30566063的博客 504

Ubuntu使用cmake出现Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

解决 Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

qq_44225529的博客 1万+

C#中的GDI和GDI+(Graphics Device Interface Plus)图形设备接口

GDI(Graphics Device Interface)是微软Windows操作系统中的一个组件,它提供了一组API,用于在显示器或打印机等图形设备上进行图形绘制和图像处理。GDI 是 Windows 编程中用于。

去追随使你安宁的东西,去做你觉得有用的事情 2592

倍压整流电路设计

倍压整流电路利用二极管和电容的充放电特性实现电压提升,可分为二倍压、三倍压及多倍压结构。其工作原理是通过交流电正负半周交替对电容充电并叠加电压,具有结构简单、成本低的优点,但带载能力差且纹波较大。典型应用包括示波器、电蚊拍等小电流高压场景。设计时需重点考虑电容耐压、二极管选型和负载匹配,高频驱动可优化性能。该电路在低功耗高压电源中具有独特优势,但需注意安全防护与电压稳定性问题。

硬核科技 1716

基于Windows GDI+的几何线条处理

基于Windows GDI+的几何线条处理徐歆恺  梁博  葛庆平首都师范大学信息工程学院,北京100044摘要 介绍了GDI+对几何线条创建、应用等基本方法,并以实例的方式对其中难于理解的部分提供了示例代码,实现了原先GDI不易实现的功能,并为进一步利用GDI+进行更复杂的图形处理奠定了良好的基础。关键词 GDI+ ;几何线条1 引言GDI+是原Windows GDI的扩展,增加了新功能并对原功

轻轻敲着键盘,静静走在人生的路上... 1483

从时序精度到视觉盛宴:PY32F030驱动WS2812的工程艺术与避坑指南

本文深入探讨了基于PY32F030微控制器驱动WS2812智能LED的完整解决方案。通过精确的时序控制、硬件PWM结合DMA传输技术,实现了稳定可靠的驱动效果,并提供了电源管理、信号完整性和常见问题排查等实用避坑指南,帮助开发者轻松应对严格的纳秒级时序挑战。

wind6的博客 120

【深度学习新浪潮】李飞飞团队VAGEN框架深度解析:让VLM智能体学会“三思而后行“

VAGEN框架的真正价值,不仅在于性能指标的突破,更在于重新定义了VLM智能体的发展方向——人工智能的进步不应只追求"做得对",更要实现"想得清"。李飞飞团队通过强制显式思考、动态表示适配和精细化奖励三大创新,让智能体第一次具备了可解释的世界建模能力。正如人类通过"观察-预测-行动"认识世界,VAGEN为AI注入的这种思考范式,或许正是通往通用人工智能的关键一步。对于开发者而言,开源的VAGEN框架不仅提供了强大的工具,更揭示了一个重要理念:让AI学会思考,比让它学会执行更重要。

专注:太空算力、AI infra、异构调度、大模型成本工程 281

java gdi_【Windows编程】系列第五篇:GDI图形绘制

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图。Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解。GDI可以绘制点、直线曲线、填充封闭区域、位图以及文本,其中文本部分已经在上一篇中将了,请参考【Windows编程】系列第三篇:文本字符输出...

weixin_42165490的博客 597

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

零基础小白如何自学GDI和GDI+

自学 GDI(Graphics Device Interface)和 GDI+ 是学习 Windows 图形编程的一个不错选择,尤其适合开发桌面应用程序时需要进行图形界面设计的开发者。GDI 和 GDI+ 是 Microsoft 提供的图形绘制接口,GDI 用于绘制基本图形元素,而 GDI+ 提供了更多的功能和现代化的图形处理能力。

小宝哥Code的专栏 1307

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5609

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: GDI+学习之路3--线条、曲线和图形(一)
下一篇: GDI+学习之路5--线条、曲线和图形(三)
backo880607
博客等级 码龄18年 28粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值