<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # **pygame.mask** Pygame 中處理圖形遮罩的模塊。 ## **函數** * pygame.mask.from\_surface() —— 從指定 Surface 對象中返回一個 Mask * pygame.mask.from\_threshold() —— 從給定閾值的 Surface 對象中創建一個 Mask ## **類** * pygame.mask.Mask —— 用于表示 2d 位掩碼(遮罩)的 Pygame 對象 用于快速實現完美的碰撞檢測,Mask 可以精確到 1 個像素級別的判斷。 Pygame 1.8 新增加的。 ## **函數詳解** ### **pygame.mask.from\_surface()** 從指定 Surface 對象中返回一個 Mask。 from\_surface(Surface, threshold = 127) -> Mask Surface 對象中透明的部分設置為 1,不透明部分設置為 0。 檢查每個像素的 alpha 值是否大于 threshold 參數指定的值。(alpha 通道使用 0 ~ 255 描述像素的透明度) 如果 Surface 對象是基于 colorkeys 實現的透明(而不是基于 pixel alphas),則忽略 threshold 參數。 注:關于 Surface 對象的透明實現,可參考:Pygame詳解(十二):Surface 對象 ### **pygame.mask.from\_threshold()** 從給定閾值的 Surface 對象中創建一個 Mask。 from\_threshold(Surface, color, threshold = (0,0,0,255), othersurface = None, palette\_colors = 1) -> Mask 從 Surface 對象中獲取 Mask,這個方法更有特色。如果只提供一個 Surface 對象,那么 Surface 對象中所有與 threshold 參數提供顏色匹配的像素均被選入 Mask 中。如果指定了 othersurface 可選參數,那么被選入 Mask 中的像素不僅需要與 threshold 參數提供顏色匹配,還需要包含在 othersurface 指定的 Surface 對象中。 ### **class pygame.mask.Mask** 用于表示 2d 位掩碼(遮罩)的 Pygame 對象。 Mask((width, height)) -> Mask ## **方法** * pygame.mask.Mask.get\_size() —— 返回 Mask 的大小 * pygame.mask.Mask.get\_at() —— 如果像素 (x, y) 被設置,返回值是非 0 * pygame.mask.Mask.set\_at() —— 設置 Mask 中給定位置的值 * pygame.mask.Mask.overlap() —— 返回兩個 Mask 在指定偏移處的重疊坐標(如果沒有返回 None) * pygame.mask.Mask.overlap\_area() —— 返回兩個 Mask 重疊的像素數量 * pygame.mask.Mask.overlap\_mask() —— 將兩個 Mask 重疊的部分創建一個新的 Mask * pygame.mask.Mask.fill() —— 將所有的位設置為 1 * pygame.mask.Mask.clear() —— 將所有的位設置為 0 * pygame.mask.Mask.invert() —— 翻轉 Mask 中所有的位(0 變 1,1 變 0) * pygame.mask.Mask.scale() —— 縮放 Mask 的尺寸 * pygame.mask.Mask.draw() —— 將 Mask 繪制到另一個 Mask 上邊 * pygame.mask.Mask.erase() —— 用另一個 Mask 擦除 Mask * pygame.mask.Mask.count() —— 返回 Mask 被設置(為 1)的像素的數量 * pygame.mask.Mask.centroid() —— 返回 Mask 的重心點 * pygame.mask.Mask.angle() —— 返回像素的方向 * pygame.mask.Mask.outline() —— 用列表的形式返回組成對象輪廓的點 * pygame.mask.Mask.convolve() —— 返回其它 Mask 的卷積 * pygame.mask.Mask.connected\_component() —— 返回與某像素區域的連接的 Mask * pygame.mask.Mask.connected\_components() —— 返回一組連接某像素區域的 Mask 的列表 * pygame.mask.Mask.get\_bounding\_rects() —— 返回一組像素邊界矩形的列表 ## **方法詳解** ### **pygame.mask.Mask.get\_size()** 返回 Mask 的大小。 get\_size() -> width,height ### **pygame.mask.Mask.get\_at()** 如果像素 (x, y) 被設置,返回值是非 0。 get\_at((x,y)) -> int 跟 Surface 對象一樣,(0, 0) 表示左上角坐標。 ### **pygame.mask.Mask.set\_at()** 設置 Mask 中給定位置的值。 set\_at((x,y),value) -> None ### **pygame.mask.Mask.overlap()** 返回兩個 Mask 在指定偏移處的重疊坐標(如果沒有返回 None)。 overlap(othermask, offset) -> x,y 重疊檢測的偏移原理如下(偏移可以為負數): ~~~ +----+----------.. |A | yoffset | +-+----------.. +--|B |xoffset | | : : ~~~ ### **pygame.mask.Mask.overlap\_area()** 返回兩個 Mask 重疊的像素數量。 overlap\_area(othermask, offset) -> numpixels 返回兩個 Mask 重疊的像素數量,這可以用于查看在某方向上發生碰撞的部分,或者查看兩個 Mask 有多少部分發生碰撞。相似的碰撞一般會通過計算重疊部分的梯度差分被發現。 ~~~ dx = Mask.overlap_area(othermask,(x+1,y)) - Mask.overlap_area(othermask,(x-1,y)) dy = Mask.overlap_area(othermask,(x,y+1)) - Mask.overlap_area(othermask,(x,y-1)) ~~~ ### **pygame.mask.Mask.overlap\_mask()** 將兩個 Mask 重疊的部分創建一個新的 Mask。 overlap\_mask(othermask, offset) -> Mask 返回的 Mask 尺寸是原始 Mask 和 othermask 參數指定的 Mask 重疊部分。 ### **pygame.mask.Mask.fill()** 將所有的位設置為 1。 fill() -> None 將 Mask 中所有的位設置為 1。 ### **pygame.mask.Mask.clear()** 將所有的位設置為 0。 clear() -> None 將 Mask 中所有的位設置為 0。 ### **pygame.mask.Mask.invert()** 翻轉 Mask 中所有的位(0 變 1,1 變 0)。 invert() -> None 翻轉 Mask 中所有的位(0 變 1,1 變 0)。 ### **pygame.mask.Mask.scale()** 縮放 Mask 的尺寸。 scale((x, y)) -> Mask Mask 根據指定尺寸縮放后返回一個新的 Mask。 ### **pygame.mask.Mask.draw** 將 Mask 繪制到另一個 Mask 上邊。 draw(othermask, offset) -> None 將 Mask 繪制到另一個 Mask 上邊,執行的是按位 or 操作。 ### **pygame.mask.Mask.erase()** 用另一個 Mask 擦除 Mask。 erase(othermask, offset) -> None 從 Mask 上擦除 othermask 指定的像素。 ### **pygame.mask.Mask.count()** 返回 Mask 被設置(為 1)的像素的數量。 count() -> pixels 返回 Mask 被設置(為 1)的像素的數量。 ### **pygame.mask.Mask.centroid()** 返回 Mask 的重心點。 centroid() -> (x, y) 找到 Mask 的重心點。如果 Mask 是空的,那么返回值是 (0, 0)。 ### **pygame.mask.Mask.angle()** 返回像素的方向。 angle() -> theta 找到圖像中像素的大致方向(-90 度 ~ 90 度),這對于實現像素對接很有用。如果 Mask 是空的,那么返回值是 0.0。 ### p**ygame.mask.Mask.outline()** 用列表的形式返回組成對象輪廓的點。 outline(every = 1) -> \[(x,y), (x,y) …\] 返回值是一個由點組成的列表,用于描繪穿過 Mask 的第一個對象的輪廓線。 every 可選參數用于設置點的跨度,默認是每 1 個像素。 ### **pygame.mask.Mask.convolve()** 返回其它 Mask 的卷積。 convolve(othermask, outputmask=None, offset=(0,0)) -> Mask 返回一個由位組 (i-offset\[0\], j-offset\[1\]) 組成的 Mask,如果轉換的 othermask 參數在右下角 (i, j) 處,那么會與自身重疊。 如果 outputmask 參數被指定,那么就會在 outputmask 參數上進行繪制,outputmask 參數會被返回。否則這個 Mask 的大小是 self.get\_size() + othermask.get\_size() - (1, 1)。 ### **pygame.mask.Mask.connected\_component()** 返回與某像素區域的連接的 Mask。 connected\_component((x,y) = None) -> Mask 它會使用 SAUF 算法進行連接需要連接的 Mask。它會連通 8 個點。默認情況下,它會返回在連接圖像中最大的 Mask。可選項: 一對指定的坐標,與其相連的組件會被返回。如果像素位置沒有被設置,那么返回的這個 Mask 就是空的。這個 Mask 的大小會與原始 Mask 一樣。 ### **pygame.mask.Mask.connected\_components()** 返回一組連接某像素區域的 Mask 的列表。 connected\_components(min = 0) -> \[Masks\] 返回一組連接某像素區的 Mask 的列表。min 可選參數用于對每個連接區的指定部分過濾噪點。 ### **pygame.mask.Mask.get\_bounding\_rects()** 返回一組像素邊界矩形的列表。 get\_bounding\_rects() -> Rects 它會獲取連接著像素塊的邊界矩形。每個邊界矩形都是一個連接每個像素的內矩形。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看