EditableImage
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
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
Métodos
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Dibuja un círculo en el punto especificado.
Dibuja otro EditableImage en este EditableImage en la posición dada.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
Dibuja una imagen en este EditableImage con transformaciones, incluyendo escalado y rotación, colocándola en la posición especificada.
Dibuja una línea entre dos puntos proporcionados.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Dibuja un rectángulo de la dimensión dada en la posición superior izquierda.
Lee una región rectangular de píxeles en un tamano de búfer.
Escribe una región rectangular de píxeles en la imagen.
Propriedades
Size
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
Devolução
DrawCircle
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
Centro del círculo, relativo a la esquina superior izquierda del EditableImage . Las posiciones fuera de los límites del lienzo están permitidas.
Radio del círculo en píxeles.
Color del círculo.
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
DrawImage
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
Posición en la que se dibujará el esquina superior izquierda de la imagen agregada.
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
DrawImageProjected
Parâmetros
Devolução
DrawImageTransformed
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
Posición en píxeles donde se colocará el punto de pivote de la imagen de origen en esta imagen.
Factores de escalado para la imagen de origen a lo largo de los ejes X y Y.
El ángulo de rotación en grados, aplicado al punto de pivote de la imagen de origen.
La fuente EditableImage para ser dibujada en esta imagen.
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
Amostras de código
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
}
)
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
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 de la línea.
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
DrawRectangle
Dibuja un rectángulo en el EditableImage de la dimensión dada en la posición superior izquierda.
Parâmetros
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 .
Tamaño del rectángulo para dibujar, en píxeles.
Color del rectángulo.
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
ReadPixelsBuffer
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
Esquina superior izquierda de la región rectangular de píxeles para leído.
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
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
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
Esquina superior izquierda de la región rectangular para dibujar los píxeles en.
Tamaño de la región rectangular de píxeles para escribir.
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
Amostras de código
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)