编辑
2025-09-26
C#
00

摘要

在C#开发中,使用GDI+(Graphics Device Interface Plus)库可以轻松地实现图形绘制功能,包括绘制线条。本文将介绍GDI+中常用的绘制线的方法与属性,并提供一些实际应用的示例。

正文

GDI+是Windows平台上用于图形绘制的API,它提供了丰富的功能来绘制图像、文本、形状等元素。要使用GDI+进行线条绘制,首先需要引入System.Drawing命名空间。

常用方法与属性

Pen类的常用属性

  • Color:设置或获取画笔的颜色。
  • Width:设置或获取画笔的宽度。
  • DashStyle:设置或获取线条的样式(实线、虚线等)。
  • StartCapEndCap:设置或获取线条的起始和结束端点样式。
  • LineJoin:设置或获取线条的连接方式。

Graphics类的常用方法

  • DrawLine:绘制线条。
  • DrawLines:绘制多条线条。
  • DrawArc:绘制弧线。

1. 绘制一个简单的直角三角形

image.png

编辑
2025-09-26
C#
00

摘要

在C# 绘制一个可拖拽的圆型窗体,需要用到以下方法与属性

方法:

  1. OnPaint(PaintEventArgs e):此方法用于自定义窗体的绘制。您可以在此方法中使用e.Graphics对象来执行自定义绘图操作。
  2. OnLoad(EventArgs e):在窗体加载时触发的事件,可用于执行初始化操作。
  3. OnMouseDown(MouseEventArgs e):在鼠标按下时触发的事件。通常用于实现拖动窗体的功能。
  4. OnMouseMove(MouseEventArgs e):在鼠标移动时触发的事件。通常用于处理拖动窗体的逻辑。
  5. OnMouseUp(MouseEventArgs e):在鼠标释放时触发的事件。通常用于处理拖动窗体的结束。

属性:

  1. FormBorderStyle:窗体的边框样式。您可以将其设置为None以创建无边框窗体。
  2. BackColor:窗体的背景颜色。
  3. Region:窗体的区域,可以用来定义窗体的形状。通常与GraphicsPath结合使用。
  4. Location:窗体在屏幕上的位置。通过设置此属性,可以移动窗体到不同的位置。
  5. Size:窗体的大小。
  6. WidthHeight:窗体的宽度和高度。
  7. DoubleBuffered:启用双缓冲以减少窗体绘制时的闪烁。
  8. Text:窗体的标题文本。
  9. TopMost:窗体是否显示在所有其他窗体的前面。
编辑
2025-09-26
C#
00

摘要

在C# WinForms应用程序中,绘制字符串是一项常见的任务,无论是为了创建自定义控件、图形用户界面元素还是简单的绘图需求。本文将介绍如何使用C#的WinForms库来绘制字符串,并列举一些常用的属性和方法,以及一些示例来帮助你更好地理解如何操作。

正文

基本概念

  1. Graphics对象:绘制字符串需要一个Graphics对象,它代表了绘图表面。你可以通过Control对象的CreateGraphics()方法获取Graphics对象,或者在Paint事件处理程序中使用e.Graphics参数。
  2. Font:Font对象用于定义要绘制的文本的字体、大小和样式。
  3. Brush:Brush对象定义了文本的颜色和填充方式。
  4. String:要绘制的文本字符串。

Graphics类的属性

1. Graphics.DrawString()方法

DrawString方法用于在指定位置绘制字符串,它的一般用法如下:

C#
using System.Drawing; Graphics g = this.CreateGraphics(); Font font = new Font("Arial", 12); Brush brush = new SolidBrush(Color.Black); string text = "Hello, WinForms!"; g.DrawString(text, font, brush, new PointF(10, 10));
编辑
2025-09-26
C#
00

摘要

在Windows Forms 应用程序中定义位置和大小所使用的基本结构。在Winform中如果不指定要填充或绘制的对象的精确位置,就无法绘制线条或填充矩形。

正文

使用 Point 结构指定位置

Point 结构表示 Windows Forms 应用程序中二维表面上的位置。此结构通常用于定义用于窗体或控件的位置;它还用于在绘制线条、矩形和其他形状时定义边界。

Point 结构围绕以下两个属性构建:

  • X:定义 Point 结构的 x 坐标或水平位置。
  • Y:定义 Point 结构的 y 坐标或垂直位置。

Point 结构的默认构造函数创建一个空的 Point 结构,其 x 坐标和 y 坐标都设置为 0,如下所示:

C#
Point pt = new Point();

可以通过 IsEmpty 属性检测空的 Point 结构,对于空的 Point 结构,它将返回 true。

C#
if (pt.IsEmpty) { // pt 是一个空的 Point 结构。 }

创建 Point 结构的最常见方式是将 xy 坐标传递给构造函数,如下所示:

C#
int x = 10; int y = 20; Point pt = new Point(x, y);

在这个构造函数中,第一个参数是 x 坐标,第二个参数是 y 坐标。构造函数的其他少见用法允许您从 Size 结构(下一节将讨论 Size 结构)或指定了 X 和 Y 值的整数创建 Point 值。

PointF 结构类似于 Point,只是它的坐标由浮点值组成,提供了更高的精度。PointF 结构也可以通过将一对浮点坐标传递给构造函数来创建,如下所示:

C#
float x = 22.4f; float y = 17.8f; PointF pt = new PointF(x, y);

Point 结构包括三个静态方法,用于从 PointF 转换为 Point 值,如下所示:

  • Ceiling:通过将每个坐标值四舍五入到下一个较高的整数值,从 PointF 转换为 Point。
  • Round:通过将每个坐标值四舍五入到最近的整数值,从 PointF 转换为 Point。
  • Truncate:通过将每个坐标值四舍五入到下一个较低的整数值,从 PointF 转换为 Point。

隐式转换操作符可以将 Point 值转换为 PointF 值,无需显式转换或方法调用。

定义可视元素的大小

Size 结构用于定义 Windows Forms 应用程序中窗口、窗体、控件和其他矩形区域的大小。Size 结构有两个非默认构造函数。第一个构造函数接受一个 Point 值,如下所示:

C#
Point pt; Size mySize = new Size(pt);

这个构造函数使用 Point 参数的 x 坐标来初始化 Size 结构的长度。Point 参数的 y 坐标用于初始化 Size 结构的高度。

第二个 Size 构造函数接受宽度和高度的离散整数值,如下所示:

C#
int width = 20; int height = 10; Size mySize = new Size(width, height);

Size 结构通过两个属性 Width 和 Height 公开其宽度和高度。

与 Point 结构类似,可以使用 IsEmpty 来测试是否为空的 Size 值,如下所示:

C#
if (mySize.IsEmpty) { // mySize 是一个空的 Size 结构。 }
编辑
2025-09-26
Python
00

在Python开发过程中,输入输出函数是每个程序员都必须掌握的基础技能。无论是制作简单的控制台程序,还是开发复杂的上位机应用,输入输出操作都扮演着至关重要的角色。

很多初学者在使用input()print()函数时,往往只停留在基础应用层面,却不知道这些函数还藏着许多实用的高级技巧。本文将从问题分析解决方案代码实战,带你全面掌握Python输入输出函数的核心要点,让你的编程技巧更上一层楼。

🔍 问题分析

📊 常见的输入输出难题

在实际Python开发中,我们经常遇到以下问题:

  1. 数据类型转换混乱:用户输入的都是字符串,如何正确转换为需要的数据类型?
  2. 输出格式不规范:如何让输出结果更加美观、易读?
  3. 异常处理缺失:用户输入错误数据时程序崩溃怎么办?
  4. 批量数据处理:如何高效处理多个输入输出操作?

这些问题在上位机开发和日常编程中频繁出现,掌握解决方案至关重要。

💡 解决方案

🎪 Python输入函数深度解析

input()函数的核心机制

input()函数的工作原理非常简单,但细节决定成败:

Python
# 基础语法 user_input = input("提示信息:")