【Pygame手册03/20】用于绘制形状的 pygame 模块

news2024/11/29 4:40:59

目录

  • 一、说明
  • 二、画图函数
    • 2.1 接口draw下的函数
    • 2.2 pygame.draw.rect()
    • 2.3 pygame.draw.polygon()
    • 2.4 pygame.draw.circle()
    • 2.5 pygame.draw.ellipse()
    • 2.6 pygame.draw.arc()
    • 2.7 pygame.draw.line ()
    • 2.8 pygame.draw.lines()
    • 2.9 pygame.draw.aaline()
    • 2.10 pygame.draw.aalines()
  • 三、绘图模块示例

一、说明

   本文对pygame的接口draw进行系统介绍。绘制几何图,不同于图像显示,它是严格按照几何坐标进行。本文对九个相关函数进行介绍。方便开发人员查阅。

二、画图函数

2.1 接口draw下的函数

   draw用于绘制形状的 pygame 模块。绘出的多数是几何形状。如下表所示:

函数功能
pygame.draw.rect绘制矩形
pygame.draw.polygon绘制多边形
pygame.draw.circle画一个圆
pygame.draw.ellipse绘制椭圆
pygame.draw.arc绘制椭圆弧
pygame.draw.line画一条直线
pygame.draw.lines绘制多个连续的直线段
pygame.draw.aaline绘制一条抗锯齿直线
pygame.draw.aalines绘制多个连续的直线抗锯齿线段

   在曲面上绘制几个简单的形状。这些函数将适用于 渲染为任何格式的图面。

   大多数函数都采用 width 参数来表示笔画的大小 (厚度)围绕形状的边缘。如果传递宽度为 0 的形状 将被填充(实心)。

   所有绘图功能都遵循曲面的裁剪区域,并将 被限制在那个区域。这些函数返回一个矩形,表示 已更改像素的边界区域。此边界矩形是“最小值” 包围受影响区域的边界框。

   所有绘图函数都接受一个 color 参数,该参数可以是 以下格式:

   一个pygame.Color用于颜色表示的 pygame 对象对象

  • 颜色表示对象的 pygame.Colorpygame 对象
  • an (RGB) triplet (tuple/list)
  • an (RGBA) quadruplet (tuple/list)
  • 已映射到表面像素格式的整数值(请参阅 pygame.Surface.map_rgb()将颜色对象转换为颜色值;反之 pygame.Surface.unmap_rgb()将映射的整数颜色值转换为颜色对象)

   颜色的 alpha 值将直接写入曲面(如果 表面包含像素 alpha),但绘制函数不会绘制 透明。

   这些功能会暂时锁定它们正在操作的表面。多 通过锁定和解锁曲面,可以加快顺序绘图调用 绘制调用周围的对象(请参阅pygame.Surface.lock()锁定 Surface 内存以进行像素访问和pygame.Surface.unlock()从像素访问中解锁 Surface 内存).

   注意 请参阅pygame.gfxdraw用于绘制形状的 pygame 模块用于替代绘制方法的模块。pygame.draw中。

2.2 pygame.draw.rect()

  • 绘制矩形
    rect(surface, color, rect) -> Rect
    rect(surface, color, rect, width=0, border_radius=0, border_top_left_radius=-1, border_top_right_radius=-1, border_bottom_left_radius=-1, border_bottom_right_radius=-1) -> Rect

  • 在给定Surface上绘制一个矩形。

参数:
surface (Surface) 要绘制的曲面
color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
rect (Rect) – 要绘制的矩形、位置和尺寸
width (int) – (可选)用于线条粗细或指示 矩形将被填充(不要与宽度值混淆 的参数)rect

if ,(默认)填充矩形width == 0
if ,用于线条粗细width > 0
if ,则不会绘制任何内容width < 0

   在 pygame 2.1.1 中更改: 现在,绘制具有宽度的矩形时,可以在 rect 的区域,而不是使用对 draw.lines() 的内部调用, 其中一半的宽度溢出到矩形区域之外。
圆角矩形
   border_radius (int) – (可选)用于绘制带有圆角的矩形。 支持的范围为 [0, min(height, width) / 2],其中 0 表示矩形 没有圆角。
   border_top_left_radius (int) – (可选)用于设置左上角的值 边境。如果未设置此值,它将使用 border_radius 值。
   border_top_right_radius (int) – (可选)用于设置右上角的值 边境。如果未设置此值,它将使用 border_radius 值。
   border_bottom_left_radius (int) – (可选)用于设置左下角的值 边境。如果未设置此值,它将使用 border_radius 值。
   border_bottom_right_radius (int) --(可选)用于设置右下角的值 边境。如果未设置此值,它将使用 border_radius 值。

   如果它将绘制没有圆角的矩形border_radius < 1
   如果 Border radii 中的任何一个具有 Value,它将使用 border_radius 的值< 0
   如果矩形同一侧的半径之和大于矩形大小,则半径将缩放

返回
   一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是给定参数的位置,其宽度和高度将为 0。

返回类型:Rect

   注意 这pygame.Surface.fill()用纯色填充 Surface方法同样适用于绘图填充矩形,并且可以在某些平台上进行硬件加速。

2.3 pygame.draw.polygon()

  •    绘制多边形
    多边形(表面、颜色、点)->矩形
    polygon(surface, color, points, width=0) -> rect
    在给定曲面上绘制多边形。

  • 参数
    surface (Surface) – 要绘制的曲面

  1. color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])

  2. points (tuple(coordinate) or list(coordinate)) – 由 3 个或更多个 (x, y) 坐标组成的序列,这些坐标组成 多边形的顶点,序列中的每个坐标必须是 元组/列表/pygame.math.Vector2二维向量2 个整数/浮点数, 例如:[(x1, y1), (x2, y2), (x3, y3)]

  3. width (int) – (可选)用于线条粗细或指示 要填充的多边形

  • 如果 width == 0,(默认)填充多边形
  • 如果width> 0,则用于线条粗细
  • 如果width< 0,则不会绘制任何内容

   注意:使用值时,边线将增长 在多边形的原始边界之外。有关更多详细信息 边缘线的粗细如何增长,请参阅注释 的width> 1widthpygame.draw.line()画一条直线功能。

返回
   如果未绘制任何像素 bounding rect 的位置将是参数中第一个点的位置(浮点值将被截断)及其宽度和 高度将为 0points

返回类型: Rect

错误给出

  • ValueError – 如果(必须至少有 3 个点)len(points) < 3
  • TypeError – 如果不是序列或不是序列 包含数字对pointspoints

注意:对于 aapolygon,请使用 aalines() 且closed=True。

2.4 pygame.draw.circle()

   画一个圆

  • circle(surface, color, center, radius) -> Rect

  • circle(surface, color, center, radius, width=0, draw_top_right=None, draw_top_left=None, draw_bottom_left=None, draw_bottom_right=None) -> Rect

   在给定曲面上绘制一个圆。

   参数

  • surface (Surface) – 要绘制的曲面
  • color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
  • center (tuple(int or float, int or float) or list(int or float, int or float) or Vector2(int or float, int or float, intor float)) – 圆的中心点,作为 2 个整数/浮点数的序列, 例如:(x, y)
  • radius (int 或 float) – 圆的半径,从参数测量, 如果小于 1,则不会绘制任何内容centerradius
  • width (int) --(可选)用于线条粗细或指示 这个圆圈要被填满

if ,width == 0 (默认)填充圆圈
if ,width > 0 用于线条粗细
if ,width < 0 则不会绘制任何内容
注意 width > 1,边线只会向外增长 。

  • draw_top_right (bool) – (可选)如果设置为 True,则为右上角 的圆圈将被绘制
  • draw_top_left (bool) – (可选)如果设置为 True,则为左上角 的圆圈将被绘制
  • draw_bottom_left (bool) – (可选)如果设置为 True,则为左下角 的圆圈将被绘制
  • draw_bottom_right(bool) --(可选)如果设置为 True,则右下角 的圆圈将被绘制

   如果任何draw_circle_part为 True,则它将绘制所有具有 True 的圆部分value,否则将绘制整个圆圈。

返回: 一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是参数值 (float 值将被截断),其宽度和高度将为 0center

返回类型:Rect

出错提示:

  • TypeError – if center is not a sequence of two numbers
  • TypeError – if radius is not a number

   在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。 当半径为 0(坐标处的像素)时,不绘制任何内容 用于在半径等于 0 时绘制。 参数接受 Floats 和 Vector2。 改进了绘图算法,使其看起来更像一个圆。centercenter

   在 pygame 2.0.0.dev8 中更改: 添加了对绘制圆象限的支持。

2.5 pygame.draw.ellipse()

   绘制椭圆
ellipse(surface, color, rect) -> Rect
ellipse(surface, color, rect, width=0) -> Rect

   在给定曲面上绘制椭圆。

参数

  • surface (Surface) – 要绘制的曲面
  • color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
  • rect (Rect) – 表示 椭圆,椭圆将在矩形内居中并有界 由它
  • wodth (int) – (可选)用于线条粗细或指示 椭圆将被填充(不要与宽度值混淆 的参数)rect

if width == 0, (default) 填充 ellipse
if width > 0, 用所给线画出
if width < 0, 无椭圆被画出

   注意 使用值时,边线只会增长 从参数的原始边界向内。
返回
   一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是给定参数的位置,其宽度和高度将为0的rect

返回类型 Rect
在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

2.6 pygame.draw.arc()

绘制椭圆弧
arc(surface, color, rect, start_angle, stop_angle) -> rect
arc(surface, color, rect, start_angle, stop_angle, width=1) -> rect

在给定曲面上绘制椭圆弧。

   两个角度参数以弧度给出,表示开始和停止 弧的位置。弧线沿逆时针方向绘制 的 .start_anglestop_angle

  • 参数
    surface (Surface) – 要绘制的表面
    color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
    rect (Rect) – 表示 弧将基于的椭圆,椭圆将居中 矩形内部
    start_angle (float) – 弧弧的起始角度
    stop_angle(浮点) --圆弧的停止角 弧度

  • 如果 ,start_angle < stop_angle则将圆弧绘制在 逆时针方向从start_angle到stop_angle;

  • 如果 ,如果 start_angle > stop_angle,tau (tau == 2 * pi) 将被添加到 stop_angle,如果生成的停止角度值大于 start_angle,则适用上述 start_angle < stop_angle 情况,否则不会绘制任何内容。

  • 如果,start_angle == stop_angle ,则不会绘制任何内容

宽度 (int) --(可选)用于线条粗细(不要混淆) 替换为参数的宽度值)rect

if width == 0,则不会绘制任何内容
if width > 0,(默认值为 1)用于线条粗细
if width < 0,与 width == 0 同
注意 使用width值时,边线只会增长 从参数的原始边界向内。
返回一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是给定参数的位置,其宽度和高度将为 0rect

返回类型:rect

在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

2.7 pygame.draw.line ()

   画一条直线
line(surface, color, start_pos, end_pos) -> rect
line(surface, color, start_pos, end_pos, width=1) -> rect

   在给定曲面上绘制一条直线。没有端盖。对于厚 线的两端是方形的。

参数

  • surface (Surface) – 要绘制的面
  • color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
  • start_pos (tuple(int or float, int or float) or list(int or float, int or float) or Vector2(int or float, int or float, int or float)) – 线的起始位置,(x, y)
  • end_pos (tuple(int or float, int or float) or list(int or float, int or float) or Vector2(int or float, int or float, intor float)) – 线的结束位置, (x, y)
  • width (int) --(可选)用于线粗

if 宽度 >= 1,则用于线条粗细(默认值为 1)
if 宽度< 1,则不会绘制任何内容

注意 使用值时,行将按如下方式增长。
对于奇数值,每条线的粗细随width原来的线在中间。
对于偶数值,每条线的粗细随 width 原始线偏离中心(因为没有确切的 绘制中心线)。因此,斜率为 < 1 的线 (水平)将在 原始线(在 y 方向上)。斜率 >= 1 的线 (垂直)的右侧将多 1 个粗细的像素 原始线(在 x 方向上)。

返回
一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是参数值 (float 值将被截断),其宽度和高度将为 0start_pos

返回类型:矩形

错误举出
TypeError – 如果 or 不是 两个数字start_posend_pos
在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

2.8 pygame.draw.lines()

   绘制多个连续的直线段
lines(surface, color, closed, points) -> Rect
lines(surface, color, closed, points, width=1) -> Rect

   在给定曲面上绘制一系列连续的直线。有 无端盖或斜接接头。对于粗线,两端是方形的。 用尖角绘制粗线可能会产生不良效果。

参数
surface (Surface) – 要绘制的曲面
color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
closed (bool) – 如果在 序列中的第一个点和最后一个点Truepoints

points (tuple(coordinate) or list(coordinate)) --点(元组(坐标)或列表(坐标)) - 2个或更多(x,y)坐标的序列,其中序列中的每个坐标必须是元组/列表/pygame.math.Vector2a的二维向量2 个整数/浮点数和相邻坐标将通过线段连接,例如对于点 [(x1, y1), (x2, y2), (x3, y3)] 将从 (x1, y1) 到 (x2, y2) 以及从 (x2, y2) 到 (x3) 绘制一条线段, y3),此外,如果闭合参数为 True,则会从 (x3, y3) 到 (x1, y1) 绘制另一条线段
width(int) – (可选)用于线粗

如果 width >= 1,则用于线条粗细(默认值为 1)
如果 width< 1,则不会绘制任何内容

**注意:**使用值时,请参阅注释 的,详细了解粗线如何生长。
返回:一个包围已更改像素的矩形,如果未绘制任何内容,则边界矩形的位置将是点参数中第一个点的位置(浮点值将被截断),其宽度和高度将为 0

返回类型:rect

错误举出:
if len(points) < 2 (必须至少有 2 个点)
TypeError – 如果点不是序列,或点不包含数字对
在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

2.9 pygame.draw.aaline()

   绘制一条抗锯齿直线
aaline(surface, color, start_pos, end_pos) -> Rect
aaline(surface, color, start_pos, end_pos, blend=1) -> Rect

   在给定曲面上绘制一条抗锯齿的直线。

   线的粗细为 1 像素,端点的高度和 每个像素的宽度为一个像素。

线及其端点的绘制方式:

  • 如果两个端点相等,则仅绘制单个像素(之后 四舍五入浮点数到最接近的整数)。
    否则,如果线不陡峭(即如果沿 x 轴的长度 大于沿 y 轴的高度):

  • 对于每个终结点:如果 ,端点的 x 坐标是整数 find 哪些像素将被它覆盖并绘制它们。x

否则:用整数计算最近点的位置 对于其 x 坐标,当将直线延伸到 端点。找出将覆盖哪些像素以及到那时覆盖多少像素。

如果端点是左边的端点,则将覆盖率乘以 (1 - 的 ) 的小数部分。x

否则,将覆盖率乘以 的小数部分。x

然后绘制这些像素。

例如:
该行的左端点将 覆盖 70% 的像素和 30% 的像素,而右侧的像素将覆盖 100% 的像素 像素。((1, 1.3), (5, 3))(1, 1)(1, 2)(5, 3)
线的左端点将覆盖 56%(即 0.8 * 70%)的像素和 24%(即 0.8 * 30%)的像素,而 正确的一个将覆盖 42%(即 0.6 * 70%) 像素和 18%(即 0.6 * 30%)的像素,而右边((1.2, 1.4), (4.6, 3.1))(1, 1)(1, 2)(5, 3)(5, 4)
然后对于端点之间的每个点,沿着这条线,其 x 坐标是一个整数:
找出将覆盖哪些像素以及该点覆盖的像素数量,以及 画出来。

例如:
沿线的点将是 和 将覆盖 50% 的像素、50% 的像素和 100% 的像素。((1, 1), (4, 2.5))(2, 1.5)(3, 2)(2, 1)(2, 2)(3, 2)
沿线的点将 be(覆盖 20% 的像素和 80% 的像素),(覆盖 70% 的 像素和 30% 的像素 ) 和 (覆盖 20% 的像素和 80% 的 像素((1.2, 1.4), (4.6, 3.1))(2, 1.8)(2, 1)(2, 2)(3, 2.3)(3, 2)(3, 3)(4, 2.8)(2, 1)(2, 2))
否则,对陡峭线执行与非陡线相同的操作,但 沿 y 轴而不是 x 轴(使用 instead of , 顶部而不是左侧,底部而不是右侧)。yx

注意 关于坐标的浮点值,一个具有坐标的点 由两个整数组成被认为是正中 所述像素(因此具有 1 像素的高度和宽度 完全覆盖它),而一个点与坐标,其中一(或两者) 的数字具有非零小数部分将部分覆盖 两个(如果两个数字都有小数部分,则为四个)相邻像素,例如,该点覆盖了 60% 的像素和 40% 的 像素 。
参数
surface (Surface) – 要绘制的曲面
color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
start_pos (tuple(int or float, int or float) or list(int or float, int or float) or Vector2(int or float, int or float, int or float)) – 线的起始位置,(x, y)
end_pos (tuple(int or float, int or float) or list(int or float, int or float) or Vector2(int or float, int or float, intor float)) – 线的结束位置, (x, y)
blend (int) – (可选) (已弃用) 如果非零 (默认) 则该行将被混合 替换为 Surface 的现有像素阴影,否则将覆盖它们

返回
一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是参数值 (float 值将被截断),其宽度和高度将为 0start_pos

返回类型:“矩形

错误举出:
TypeError – 如果 start_pos 或 end_pos不是 两个数字。
在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

2.10 pygame.draw.aalines()

绘制多个连续的直线抗锯齿线段
aalines(surface, color, closed, points) -> rect
aalines(surface, color, closed, points, blend=1) -> rect

在给定的 表面。

参数
surface (Surface) – 要绘制的曲面
color (Color or int or tuple(int, int, int, [int])) – 绘制颜色,如果使用 元(RGB[A])
closed (bool) – 如果在 序列中的第一个点和最后一个点Truepoints
points (tuple(coordinate) or list(coordinate)) – 点(元组(坐标)或列表(坐标)) - 2个或更多(x,y)坐标的序列,其中序列中的每个坐标必须是元组/列表/pygame.math.Vector2a的二维向量2 个整数/浮点数和相邻坐标将通过线段连接,例如对于点 [(x1, y1), (x2, y2), (x3, y3)] 将从 (x1, y1) 到 (x2, y2) 以及从 (x2, y2) 到 (x3) 绘制一条线段, y3),此外,如果闭合参数为 True,则会从 (x3, y3) 到 (x1, y1) 绘制另一条线段

blend (int) – (可选) (已弃用) 如果非零 (默认) 每行将被混合 替换为表面的现有像素阴影,否则像素将 覆盖

返回一个边界已更改像素的矩形,如果未绘制任何像素 bounding rect 的位置将是参数中第一个点的位置(浮点值将被截断)及其宽度和 高度将为 0points

返回类型 rect

错误举出:
ValueError – 如果len(points) < 2(必须至少有 2 个点)
TypeError – 如果不是序列points或points不是序列 包含数字对
在 pygame 2.0.0 中更改: 添加了对关键字参数的支持。

三、绘图模块示例

   draw 模块的示例代码。

import pygame
from math import pi

# Initialize pygame
pygame.init()

# Set the height and width of the screen
size = [400, 300]
screen = pygame.display.set_mode(size)

pygame.display.set_caption("Example code for the draw module")

# Loop until the user clicks the close button.
done = False
clock = pygame.time.Clock()

while not done:
    # This limits the while loop to a max of 60 times per second.
    # Leave this out and we will use all CPU we can.
    clock.tick(60)

    for event in pygame.event.get():  # User did something
        if event.type == pygame.QUIT:  # If user clicked close
            done = True  # Flag that we are done so we exit this loop

    # Clear the screen and set the screen background
    screen.fill("white")

    # Draw on the screen a green line from (0, 0) to (50, 30)
    # 5 pixels wide. Uses (r, g, b) color - medium sea green.
    pygame.draw.line(screen, (60, 179, 113), [0, 0], [50, 30], 5)

    # Draw on the screen a green line from (0, 50) to (50, 80)
    # Because it is an antialiased line, it is 1 pixel wide.
    # Uses (r, g, b) color - medium sea green.
    pygame.draw.aaline(screen, (60, 179, 113), [0, 50], [50, 80], True)

    # Draw on the screen 3 black lines, each 5 pixels wide.
    # The 'False' means the first and last points are not connected.
    pygame.draw.lines(
        screen, "black", False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5
    )

    # Draw a rectangle outline
    pygame.draw.rect(screen, "black", [75, 10, 50, 20], 2)

    # Draw a solid rectangle. Same color as "black" above, specified in a new way
    pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20])

    # Draw a rectangle with rounded corners
    pygame.draw.rect(screen, "green", [115, 210, 70, 40], 10, border_radius=15)
    pygame.draw.rect(
        screen,
        "red",
        [135, 260, 50, 30],
        0,
        border_radius=10,
        border_top_left_radius=0,
        border_bottom_right_radius=15,
    )

    # Draw an ellipse outline, using a rectangle as the outside boundaries
    pygame.draw.ellipse(screen, "red", [225, 10, 50, 20], 2)

    # Draw an solid ellipse, using a rectangle as the outside boundaries
    pygame.draw.ellipse(screen, "red", [300, 10, 50, 20])

    # This draws a triangle using the polygon command
    pygame.draw.polygon(screen, "black", [[100, 100], [0, 200], [200, 200]], 5)

    # Draw an arc as part of an ellipse.
    # Use radians to determine what angle to draw.
    pygame.draw.arc(screen, "black", [210, 75, 150, 125], 0, pi / 2, 2)
    pygame.draw.arc(screen, "green", [210, 75, 150, 125], pi / 2, pi, 2)
    pygame.draw.arc(screen, "blue", [210, 75, 150, 125], pi, 3 * pi / 2, 2)
    pygame.draw.arc(screen, "red", [210, 75, 150, 125], 3 * pi / 2, 2 * pi, 2)

    # Draw a circle
    pygame.draw.circle(screen, "blue", [60, 250], 40)

    # Draw only one circle quadrant
    pygame.draw.circle(screen, "blue", [250, 250], 40, 0, draw_top_right=True)
    pygame.draw.circle(screen, "red", [250, 250], 40, 30, draw_top_left=True)
    pygame.draw.circle(screen, "green", [250, 250], 40, 20, draw_bottom_left=True)
    pygame.draw.circle(screen, "black", [250, 250], 40, 10, draw_bottom_right=True)

    # Go ahead and update the screen with what we've drawn.
    # This MUST happen after all the other drawing commands.
    pygame.display.flip()

# Be IDLE friendly
pygame.quit()

   绘制程序输出结果:
在这里插入图片描述

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

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

相关文章

java之VO,BO,PO,DO,DTO

概念 VO&#xff08;View Object&#xff09;&#xff1a;视图对象&#xff0c;用于展示层&#xff0c;它的作用是把某个指定页面&#xff08;或组件&#xff09;的所有数据封装起来。DTO&#xff08;Data Transfer Object&#xff09;&#xff1a;数据传输对象&#xff0c;这…

为React开发人员释放ChatGPT的开发力量

本文将深入研究ChatGPT可以授权React开发人员的无数用例&#xff0c;并提供有价值的见解。将ChatGPT集成到React开发中&#xff0c;为寻求增强工作流程的开发人员开启了一个可能性的世界&#xff0c;从代码辅助和项目规划到创造性的头脑风暴和UI/UX设计协作。 React是一个用于构…

管理类联考-复试-管理类知识-汇总

文章目录 总论管理的四大职能管理的效率与成果管理的职能管理者的技能不同层级需要的管理技能 古典管理理论与我国当代企业形态泰罗科学管理理论法约尔14条管理原则霍桑实验我国经济管理体制制度现代企业的特质我国经济发展与社会矛盾管理的基本原理 管理道德与社会责任企业的社…

ESP32工程中CMake使用及加入第三方SDK库文件

1、ESP32工程结构 本文中使用的是乐鑫官方推出的ESP-IDF v5.1对ESP32S3设备开发&#xff0c;并非是Arduino、Micro-python等第三方工具开发。在ESP-IDF框架中&#xff0c;乐鑫官方已经将CMake 和 Ninja 编译构建工具集成到了ESP-IDF中。 ESP-IDF 即乐鑫物联网开发框架&#xff…

跨境电商无货源如何实现自动化对接1688货源商品上架?1688商品采集API来帮你

阿里巴巴集团旗下的B2B电子商务网站&#xff0c;提供海量优质商品&#xff0c;为采购商和供应商提供交流、合作、采购等服务&#xff0c;是很多没有货源优势的电商卖家首选的货源途径&#xff0c;也是国内最大、货源种类最齐全的货源网站。 不少做跨境电商无货源的朋友都想要直…

WordPress管理员修改自己用户名的插件Username

有一些站长在刚开搭建WordPress网站时&#xff0c;对于管理员的用户名是随意输入&#xff0c;后来想要修改时发现不懂得如何下手。其实&#xff0c;修改WordPress管理员用户名最快速的方法就是进入数据库直接修改&#xff0c;详见『通过phpMyAdmin直接修改WordPress用户名的图文…

【qt创建线程两种方式】

QT使用线程的两种方式 1.案例进度条 案例解析&#xff1a; 如图由组件一个进度条和三个按钮组成&#xff0c;当点击开始的时候进度条由0%到100%&#xff0c;点击暂停&#xff0c;进度条保持之前进度&#xff0c;再次点击暂停变为继续&#xff0c;点击停止按钮进度条停止。 案…

如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据

技术背景 实际上&#xff0c;我在年前的blog&#xff0c;已经写过Android平台GB28181后台service模式启动摄像头按需回传数据了&#xff0c;此次版本&#xff0c;是上个demo的迭代版&#xff0c;目的是平台侧如果不发起回传请求的话&#xff0c;摄像头不打开。 后台service模…

系统调用之文件IO

学习完使用标准io库函数&#xff0c;进一步深入linux的内核实现系统的调用&#xff0c;本节主要学习文件io的相关函数。 标准IO与文件IO的区别 标准io是库函数&#xff0c;是系统调用的封装。 文件io是系统调用&#xff0c;是linux内核中的函数。 标准io有缓存&#xff0c;文件…

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

背景 基于前面搭建的3节点 Kubernetes 集群&#xff0c;今天我们使用 Registry2 搭建私有镜像仓库&#xff0c;这在镜像安全性以及离线环境下运维等方面具有重要意义。 Note: 由于是测试环境&#xff0c;以下创建了一个 local-storage 的 StorageClass &#xff0c;并使用本地…

STM32 TIM输入捕获测频率占空比库函数

目录 一、输入捕获初始化函数 TIM_ICInit TIM_PWMIConfig TIM_ICStructInit 二、主从触发模式对应函数 TIM_SelectInputTrigger TIM_SelectOutputTrigger TIM_SelectSlaveMode 三、配置分频器函数 TIM_SetIC1Prescaler TIM_SetIC2Prescaler TIM_SetIC3Prescaler T…

OpenAI视频生成模型Sora背后的技术及其深远的影响

前言 Sora的视频生成技术在保真度、长度、稳定性、一致性、分辨率和文字理解等方面都达到了当前最优水平。其核心技术包括使用视觉块编码将不同格式的视频统一编码成Transformer可训练的嵌入向量&#xff0c;以及类似于扩散过程的UNet方法进行降维和升维的加噪与去噪操作。通过…

IO 流分类

一、File File 类&#xff08;磁盘操作&#xff09;可以用于表示文件和目录的信息&#xff0c;但是它不表示文件的内容。递归地列出一个目录下所有文件&#xff1a; public static void listAllFiles(File dir) {if (dir null || !dir.exists()) {return;}if (dir.isFile())…

Java集合篇之深入解析LinkedList

写在开头 作为ArrayList的同门师兄弟&#xff0c;LinkedList的师门地位逊色不少&#xff0c;除了在做算法题的时候我们会用到它之外&#xff0c;在实际的开发工作中我们极少使用它&#xff0c;就连它的创造者都说&#xff1a;“I wrote it&#xff0c;and I never use it”&am…

MySQL之json数据操作

1 MySQL之JSON数据 总所周知&#xff0c;mysql5.7以上提供了一种新的字段格式json&#xff0c;大概是mysql想把非关系型和关系型数据库一口通吃&#xff0c;所以推出了这种非常好用的格式&#xff0c;这样&#xff0c;我们的很多基于mongoDB的业务都可以用mysql去实现了。当然…

Java 基于微信小程序的汽车4S店客户管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

C++类和对象-多态->案例1计算器类、案例2制作饮品、案例3电脑组装需求分析和电脑组装具体实现

#include<iostream> using namespace std; #include<string> //分别利用普通写法和多态技术实现计算器 //普通写法 class Calculator { public: int getResult(string oper) { if (oper "") { return m_Num1 m_Num2; …

引入成熟的Pytest自动化测试框架

虽然我们能使用脚本编写自动化测试框架&#xff0c;但没有必要重复找车轮子&#xff0c;引入成熟的自动化测试框架即可&#xff0c; Pytest是目前最成熟、功能最全面的Python测试框架之一&#xff0c;简单灵活、易于上手&#xff0c;可完全兼容其他测试框架如unitest&#xff…

普中51单片机学习(十)

动态数码管 数码管显示原理 动态显示的特点是将所有数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff0c;利用发光管的余辉和人眼视觉暂留作用&#xf…

SSTI模板注入漏洞(vulhub 复现)

首先了解模板引擎&#xff1a; 模板引擎&#xff08;这里特指用于Web开发的模板引擎&#xff09;是为了使用户界面与业务数据&#xff08;内容&#xff09;分离而产生的&#xff0c;它可以生成特定格式的文档&#xff0c;利用模板引擎来生成前端的html代码&#xff0c;模板引擎…