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

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 408

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

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

backo880607的专栏 5459

【YOLO 系列】基于YOLO V8的智能车载交通标志识别系统【python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍了基于YOLO V8构建智能车载交通标志识别系统的完整流程。从环境搭建、数据集准备、模型训练到PyQt5图形界面开发,提供了Python源码和实战代码,帮助开发者快速实现高精度、实时的交通标志检测应用,提升驾驶辅助系统的开发效率。

wdx012345的博客 967

LTspice introduction - 2 LTspice的界面

LTspice的界面主要有两个:Schematic Capture和Waveform Viewer Schematic Capture 它主要是用来画电路图的,画完电路图之后,添加一些dot 命令同时选择一些仿真的参数,点击执行(Run)Waveform Viewer 如果你的仿真不是op point的话,一个都会打开它,在它里面你可以画图相应的图形。 有两种方式可以在Viewer

贾亮的专栏 3221

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

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

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

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(中)

介绍了三相电机控制中的SVPWM算法实现及保护机制设计。SVPWM部分详细解析了电压矢量扇区判断、占空比计算和过调制保护,通过限制占空比范围(0-100%)防止电机失控,并提供了完整的代码实现。保护模块则重点分析了过流、过压/欠压、过温三种保护机制,采用分级处理策略(硬保护停机/软保护降功率)确保系统安全。此外,文章还介绍了参数管理模块在STM32 Flash中的存储方案,包括参数定义、数据结构和读写操作,为电机控制系统提供了完整的解决方案。

bother3000的博客 1389

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

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

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

delphi 调用deepseek r1 api 并流式返回结果

摘要:本文展示了一个使用Delphi调用DeepSeek API的代码示例,包含两种调用方式:一次性获取结果和流式返回结果。代码实现了完整的API请求处理,包括HTTP客户端设置、JSON数据处理和UI界面交互。其中流式调用通过TStreamReader处理服务器发送事件(SSE),实时更新到TRichEdit控件并保持滚动条位置。文章还提到界面美化优化,为Delphi开发者提供了调用AI服务的实用参考方案。(150字)

全粘工程师 498

YOLOv11改进策略【卷积层】| arXiv 2025 YOLO-Master中的稀疏混合专家ES-MoE 动态路由提适配 + 稀疏激活降延迟,突破精度-效率权衡

ES-MoE(Efficient Sparse Mixture-of-Experts)是为解决传统YOLO类实时目标检测器的静态计算冗余问题而提出的稀疏混合专家模块。现有YOLO架构对所有输入场景采用统一的密集计算模式,导致简单场景资源浪费、复杂场景(如密集小目标、遮挡场景)计算不足,难以平衡检测精度与推理速度。ES-MoE引入实例条件自适应计算,通过动态路由机制为不同复杂度的输入分配差异化计算资源,突破传统静态架构的精度-效率权衡限制,同时适配实时检测的轻量化需求。

Limiiiing的博客 463

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

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

weixin_42165490的博客 597

【sealos安装指南】基于 Sealos 安装 Kubernetes 1.33.6 高可用集群

本文介绍使用Sealos工具快速搭建Kubernetes集群的详细指南。Sealos简化了K8s部署流程,自动完成系统调优,适合新手学习使用。文章提供了服务器规划、环境准备、在线/离线两种安装方式的具体步骤,包括主机名设置、swap关闭、数据目录配置等。重点讲解了Sealos的安装命令参数说明,以及添加/删除节点等常用操作。推荐使用Calico网络组件确保稳定性,并附有安装成功后的验证截图。该指南能帮助用户快速搭建一个包含master和worker节点的K8s集群,底层基于containerd运行。

欢迎你们到来,希望能帮到大家 463

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

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

小宝哥Code的专栏 1307

SAP 经营范围(Operating Concern) 和业务范围 (Business Area) 在核算架构或是管理架构中的区别和联系分别是什么 请给具体的示例

摘要:SAP系统中,业务范围(Business Area)和经营范围(Operating Concern)在核算架构中具有不同功能。业务范围是FI/CO共用维度,用于跨公司码的业务线核算(如电子产品、机械设备),支持内部管理和简单对外报表。经营范围则是CO-PA专属维度,聚焦获利能力分析,可细化到产品+客户+区域组合(如分析手机在华东区域的获利情况)。两者存在层级关联:经营范围包含业务范围作为基础维度,业务范围数据会传递至经营范围进行深度分析。实际应用中需先配置业务范围,再设置经营范围并关联相关维度,共同支

金牌架构师 96

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 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、付费专栏及课程。

余额充值