EditableImage

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável

EditableImage permite la creación y manipulación de imágenes en tiempo de ejecución.

Para crear un EditableImage vacío, use AssetService:CreateEditableImage() . Para crear un EditableImage desde una imagen existente, use 2> Class.AssetService:CreateEditableImageAsync()2> .

Class.EditableImage se puede utilizar en cualquier propiedad Content que toma una imagen, como ImageLabel.ImageContent o 0> Class.MeshPart.TextureContent0> . Esto se hace al configurar la propiedad de contenido a EditableImage3> .

El sistema de coordenadas de EditableImage está relativo a la parte superior izquierda de la imagen:

  • Top-izquierda: (0, 0)
  • Bottom-right: (Size.X - 1, Size.Y - 1)

Cuando usa AssetService:PromptCreateAssetAsync() para publicar un objeto que tiene una propiedad Content que se refiere a un EditableImage , el objeto editado se publica como una imagen y la propiedad se establece a un nuevo ID de activo.

Resumo

Propriedades

Métodos

Propriedades

Somente leitura
Não replicado
Ler Parallel

Tamaño del EditableImage en píxeles. El tamaño máximo es 1024×1024. Intenta establecer esta propiedad en un tamaño más grande para que se ajuste a 1024.

Establecer esta propiedad cambia el tamaño de la canvas de la imagen editable, pero no cambia el tamaño de los elementos. Si cambia a un tamaño más grande, se establecerán los píxeles nuevos a un valor RGBA de [0, 0, 0, 0] . Si cambia a un tamaño más pequeño, se eliminarán los elementos existentes. Considere

Métodos

Destroy

void

Devolução

void

DrawCircle

void

Dibuja un círculo en el punto especificado en el EditableImage . Si el círculo es semitransparente, se mezclará con los píxeles detrás de él usando la fuente por encima de la mezcla.

Parâmetros

center: Vector2

Centro del círculo, relativo a la esquina superior izquierda del EditableImage . Las posiciones fuera de los límites del lienzo están permitidas.

radius: number

Radio del círculo en píxeles.

color: Color3

Color del círculo.

transparency: number

Transparencia del círculo con 0 siendo completamente opaco y 1 siendo completamente transparente.

Cómo se mezclan los píxeles de la imagen de origen con los píxeles de la imagen agregada.


Devolução

void

DrawImage

void

Dibuja otro EditableImage dentro de este EditableImage en la posición dada. Las posiciones fuera de los límites del lienzo están permitidas para que solo se dibuje parte de la nueva imagen.

Parâmetros

position: Vector2

Posición en la que se dibujará el esquina superior izquierda de la imagen agregada.

image: Object

El EditableImage para dibujar en este EditableImage .

Cómo los píxeles de la imagen de origen deben mezclarse con los píxeles de la imagen agregada.


Devolução

void

DrawImageProjected

void

Parâmetros

mesh: Object
projection: Dictionary
brushConfig: Dictionary

Devolução

void

DrawImageTransformed

void

Este método te permite dibujar un EditableImage dentro de este EditableImage con transformaciones aplicadas, como escalado y rotación. El parámetro de posición especifica dónde se colocará el punto de pivote de la imagen de origen después de las transformaciones. Las posiciones fuera de los límites del lienzo están permitidas para que solo se dibuje la parte de la nueva imagen.

Parâmetros

position: Vector2

Posición en píxeles donde se colocará el punto de pivote de la imagen de origen en esta imagen.

scale: Vector2

Factores de escalado para la imagen de origen a lo largo de los ejes X y Y.

rotation: number

El ángulo de rotación en grados, aplicado al punto de pivote de la imagen de origen.

image: Object

La fuente EditableImage para ser dibujada en esta imagen.

options: Dictionary

Diccionario opcional para la configuración adicional:

  • CombineType : Indica cómo los píxeles de la imagen de origen se mezclan con los de la destino. Por defecto es Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Escribe el método de muestreo (por ejemplo, Default para bilinear o Pixelated para el vecino más cercano). Por defecto es 0> enum.resamplerMode.DEFAULT0> .
  • PivotPoint : Especifica el punto de pivote dentro de la imagen de origen para escalar y rotar. Por defecto es el centro de la imagen de origen (por ejemplo, Image.Size / 2).

Devolução

void

Amostras de código

EditableImage:DrawImageTransformed()

local AssetService = game:GetService("AssetService")
-- Example of drawing a rotated and scaled image onto another EditableImage
local srcImage = AssetService:CreateEditableImage({ Size = Vector2.new(256, 256) })
local dstImage = AssetService:CreateEditableImage({ Size = Vector2.new(512, 512) })
-- Drawing with a rotation of 45 degrees, scaling by 2x, and placing at (100, 100)
dstImage:DrawImageTransformed(
Vector2.new(100, 100), -- Position
Vector2.new(2, 2), -- Scale
45, -- Rotation (degrees)
srcImage, -- Source image
{
CombineType = Enum.ImageCombineType.AlphaBlend, -- Optional, default is AlphaBlend
SamplingMode = Enum.ResamplerMode.Default, -- Optional, default is Default
PivotPoint = srcImage.Size / 2 -- Optional, default is center of the source image
}
)
EditableImage:DrawImageTransformed() - Crop

local AssetService = game:GetService("AssetService")
-- Source image
local srcImage = AssetService:CreateEditableImageAsync(Content.fromUri(assetUri))
-- Crop area defined by offset and size
local cropOffset = Vector2.new(50, 50)
local cropSize = Vector2.new(100, 100)
-- Destination image with size of the crop area
local dstImage = AssetService:CreateEditableImage({ Size = cropSize })
-- Position (top-left corner)
local position = Vector2.new(0, 0)
-- Scale factors (no scaling)
local scale = Vector2.new(1, 1)
-- Rotation angle (no rotation)
local rotation = 0
-- Draw the source image onto the destination image with adjusted pivot to crop the image
dstImage:DrawImageTransformed(
position,
scale,
rotation,
srcImage,
{
CombineType = Enum.ImageCombineType.Overwrite,
PivotPoint = cropOffset -- Set pivot point to cropOffset to start drawing from there
}
)

DrawLine

void

Dibuja una línea anti-aliada en el EditableImage uno de los píxeles de grosor entre los dos puntos proporcionados.

Parâmetros

Inicia el punto de la línea.

Punto final de la línea.

color: Color3

Color de la línea.

transparency: number

Transparencia de la línea.

Cómo se mezclan los píxeles de la imagen de origen con los píxeles de la imagen agregada.


Devolução

void

DrawRectangle

void

Dibuja un rectángulo en el EditableImage de la dimensión dada en la posición superior izquierda.

Parâmetros

position: Vector2

Posición de la parte superior izquierda del rectángulo. A diferencia de otros métodos de dibujo, esto no se puede hacer fuera de los límites de la EditableImage .

size: Vector2

Tamaño del rectángulo para dibujar, en píxeles.

color: Color3

Color del rectángulo.

transparency: number

Transparencia del rectángulo.

Cómo se mezclan los píxeles de la imagen de origen con los píxeles de la imagen agregada.


Devolução

void

ReadPixelsBuffer

Escrever Parallel

Una versión de ReadPixels() que devuelve un tamano en lugar de una tabla. Cada número en el tamano es un solo bit, mientras que cada número en la tabla es 4 bit, lo que hace que ReadPixelsBuffer() sea más eficiente que Class.EditableImage:ReadPixels()|ReadPixels

Nota que este método usa alpha en lugar de transparencia, a diferencia de los métodos de dibujo EditableImage.

Parâmetros

position: Vector2

Esquina superior izquierda de la región rectangular de píxeles para leído.

size: Vector2

Tamaño de la región rectangular de píxeles para leído.


Devolução

Espacio de memoria donde cada píxel se representa por cuatro bytes (rojo, verde, azul y alfa, respectivamente). La longitud del espacio de memoria se puede calcular como Size.X * Size.Y * 4 bytes.

Amostras de código

EditableImage:ReadPixelsBuffer()

local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32,32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, Vector2.new(2, 1))
local color1 = Color3.fromRGB(buffer.readu8(pixelsBuffer, 0), buffer.readu8(pixelsBuffer, 1), buffer.readu8(pixelsBuffer, 2))
local transparency1 = 1 - buffer.readu8(pixelsBuffer, 3)
local color2 = Color3.fromRGB(buffer.readu8(pixelsBuffer, 4), buffer.readu8(pixelsBuffer, 5), buffer.readu8(pixelsBuffer, 6))
local transparency2 = 1 - buffer.readu8(pixelsBuffer, 7)
local averageColor = color1:Lerp(color2, 0.5)
local averageTransparency = (transparency1 + transparency2) / 2
local part = Instance.new("Part")
part.Color = averageColor
part.Transparency = averageTransparency
part.Parent = workspace

WritePixelsBuffer

void

Una versión de WritePixels() que toma un tamano en lugar de una tabla. Cada número en el tamano es un solo bit, mientras que cada número en la tabla es 4 bit, lo que hace que WritePixelsBuffer() sea más eficiente que Class.EditableImage:WritePixels()|WritePixels()

Nota que este método usa alpha en lugar de transparencia, a diferencia de los métodos de dibujo EditableImage.

Parâmetros

position: Vector2

Esquina superior izquierda de la región rectangular para dibujar los píxeles en.

size: Vector2

Tamaño de la región rectangular de píxeles para escribir.

buffer: buffer

Un tamano de píxeles donde cada píxel se representa por cuatro bytes (rojo, verde, azul y alfa, respectivamente). La longitud del tamano de píxeles debería ser Size.X * Size.Y * 4 bytes.


Devolução

void

Amostras de código

EditableImage:WritePixelsBuffer()

local AssetService = game:GetService("AssetService")
local options = { Size = Vector2.new(32,32) }
local editableImage = AssetService:CreateEditableImage(options)
local pixelsBuffer = editableImage:ReadPixelsBuffer(Vector2.zero, editableImage.Size)
for i = 1, editableImage.Size.X * editableImage.Size.Y do
local pixelIndex = (i - 1) * 4
buffer.writeu8(pixelsBuffer, pixelIndex, 255 - buffer.readu8(pixelsBuffer, pixelIndex))
buffer.writeu8(pixelsBuffer, pixelIndex + 1, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 1))
buffer.writeu8(pixelsBuffer, pixelIndex + 2, 255 - buffer.readu8(pixelsBuffer, pixelIndex + 2))
end
editableImage:WritePixelsBuffer(Vector2.zero, editableImage.Size, pixelsBuffer)

Eventos