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

目录

  • 一、说明
  • 二、画图函数
    • 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()

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

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

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

相关文章

【EI会议征稿通知】2024年通信安全与信息处理国际学术会议(CSIP 2024)

2024年通信安全与信息处理国际学术会议&#xff08;CSIP 2024) 2024 International Conference on Communication Security and Information Processing 随着全球信息化的深入发展&#xff0c;通信安全与信息处理已成为当今社会关注的热点问题。为了加强国际间的学术交流与合…

Java之获取Nginx代理之后的客户端IP

Java之获取Nginx代理之后的客户端IP Nginx代理接口之后&#xff0c;后台获取的IP地址都是127.0.0.1&#xff0c;解决办法是需要配置Nginx搭配后台获取的方法&#xff0c;获得设备的真实地址。我们想要获取的就是nginx代理日志中的这个IP nginx配置 首先在nginx代理的对应lo…

opencv安装介绍以及基本图像处理详解

文章目录 一、什么是OpenCV &#xff1f;二. OpenCV 安装1. 下载地址2.安装命令&#xff1a;pip install opencv-python 三、图像基础1. 基本概念2. 坐标系3. 基本操作&#xff08;彩色图片&#xff09;&#xff08;1&#xff09;读取图片&#xff1a;cv2.imread( )&#xff08…

ThreadLocal(3):ThreadLocal的内部结构

下面介绍ThreadLocal的内部结构&#xff0c;探究它能够实现线程数据隔离的原理。 1 常见的误解 ​如果我们不去看源代码的话&#xff0c;可能会猜测ThreadLocal是这样子设计的&#xff1a;每个ThreadLocal都创建一个Map&#xff0c;然后用线程作为Map的key&#xff0c;要存储…

this的指向问题总结

this一般会出现在函数里面&#xff0c;但是一般情况下只有在函数被调用执行时&#xff0c;才能确定this指向哪个对象。一般情况下this是指调用函数的对象。 1.在全局作用域下或者普通函数中this的指向一般都是window对象 window.fn&#xff08;&#xff09;&#xff0c;普通函…

前端实现鼠标点击箭头旋转180度

效果&#xff1a; <div click"showChecklist" class"checkCLass cur pr-20px pl-20px pa flex ai-center"><span>{{ checkListStatus() }}</span><p class"trangle"></p></div> 下面是三角形状的样式 .tr…

qt对stl模型显示的封装

我一直都想把vtk显示这一块做成一个封装的静态lib&#xff0c;然后别的类只需要我暴露出的头文件和lib文件就可以了&#xff0c;这次我实现的是对一个放stl文件的文件夹下的stl文件做显示&#xff0c;用的是vs2017qt,实现的主要效果如下&#xff1a; 因为qt自身带的标题栏显示…

CAN_相关的测试用例+测试方法+测试工具使用+输出测试报告

测试类型: 第一:通信测试 第二:间接网络管理测试 第三:AUTOSAR网络管理测试 第四:诊断协议栈Diva测试 第五:诊断协议补充测试 第六:Bootloader测试 第七:网…

用html编写的招聘简历

用html编写的招聘简历 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

架构师蓝图: 理解软件风格与模式

本文介绍了10种软件架构风格及其对应设计模式&#xff0c;梳理了各个风格的优缺点和适用场景&#xff0c;帮助读者在架构选项过程中能有的放矢&#xff0c;做出更适合业务场景的架构设计。原文: The Architect’s Blueprint: Understanding Software Styles and Patterns with …

onlyoffice document builder使用

office这个体系分为四个大教程 1、【document server文档服务器基础搭建】 2、【连接器(connector)或者jsApi调用操作office】-进阶 3、【document builder文档构造器使用】-进阶 4、【Conversion API(文档转化服务)】-进阶 如果需要连接器&#xff0c;可以查看&#xff1…

认识Redis:不只是缓存,还有这些厉害的功能!

在当今数据驱动的世界中&#xff0c;快速存取信息成为了技术发展的关键。而在众多存储解决方案中&#xff0c;Redis以其独特的魅力和强大的功能&#xff0c;成为了开发者们的宠儿。今天&#xff0c;就让我们一起来认识一下Redis。 一、Redis是什么&#xff0c;可以用来干什么&…

EasyRecovery易恢复中文破解版2024最新破解序列号

EasyRecovery易恢复是一款来自美国的数据恢复软件&#xff0c;已有35年&#xff08;或38年&#xff09;的历史。它支持不同存储介质的数据恢复&#xff0c;包括电脑系统硬盘、移动硬盘等&#xff0c;并针对不同的数据丢失原因提供了相应的恢复方案。 EasyRecovery易恢复是一款功…

【清关知识】毛里求斯的清关文件及清关手续

1、清关文件 1&#xff09;发票 海关发票&#xff08;3份&#xff09;、商业发票。所有货物随货发票必须为正本原始发票&#xff0c;所有进口商在办理清关提货手续时&#xff0c;首先必须向海关呈交商业登记号码&#xff0c;凭此登记号码才可向公司注册局登记。 2&#xff0…

【linux】体系结构和os管理

冯诺依曼体系结构 输入单元&#xff1a;包括键盘, 鼠标&#xff0c;扫描仪, 写板等 中央处理器(CPU)&#xff1a;含有运算器和控制器等 输出单元&#xff1a;显示器&#xff0c;打印机等 这里的存储器指的是内存 三者是相互连接的&#xff0c;设备之间会进行数据的来回拷贝&am…

以理论89、上机100分成绩终于通过了OceanBase OBCP的考试

OceanBase OBCP的考试分为理论考试和上机考试&#xff0c;跟OBCA认证考试比较来说&#xff0c;难度上升了一个很多大的层次。OBCA我是好几年前考的了&#xff0c;现在因为公司再去o&#xff0c;准备进OceanBase&#xff0c;所以必须快速考出OBCP证书&#xff0c;本来想着直接背…

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

【Java】图解 JVM 垃圾回收(二):垃圾收集器、Full GC

图解 JVM 垃圾回收&#xff08;二&#xff09; 1.垃圾收集器1.1 内存分配与回收策略1.2 Serial 收集器1.3 Parallel Scavenge 收集器1.4 ParNew 收集器1.5 CMS 收集器1.6 G1 收集器 2.Full GC 的触发条件 1.垃圾收集器 Java 虚拟机提供了多种垃圾回收器&#xff0c;每种回收器…

postgresql 文件结构(一) 数据库、表对应的文件

1、问题 甲方要求提供数据库数据量大小&#xff0c;由于各个业务数据库共用一个postgres&#xff0c;因此想把每个数据库占用的空间都统计一下。 2、查找物理存储文件目录 如下图所示&#xff0c;可以查询表、库的物理存储文件名称 -- 查询表对应的文件 select oid,relname…

c编译器学习02:chibicc文档翻译

目的 先粗略地看一遍作者的书籍。 原文档地址 https://www.sigbus.info/compilerbook# “低レイヤを知りたい人のためのCコンパイラ作成入門” 为想了解底层的人准备的C编译器制作入门 Rui Ueyama ruiucs.stanford.edu 2020-03-16 作者简介 https://www.sigbus.info/ 植山…