EditableImage

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile

EditableImage consente la creazione e manipolazione in tempo reale delle immagini.

Per creare un vuoto EditableImage , usa AssetService:CreateEditableImage() . Per creare un EditableImage da un'immagine esistente, usa 1> Class.AssetService:CreateEditableImageAsync()1> .

Class.EditableImage può essere utilizzato in qualsiasi Content proprietà che prende un'immagine, come ImageLabel.ImageContent o 0> Class.MeshPart.TextureContent0> . Questo viene fatto impostando la proprietà del contenuto su EditableImage3> .

Il sistema di coordinamento EditableImage è relativo all'angolo in alto a sinistra dell'immagine:

  • Top-left: (0, 0)
  • A sinistra: (Size.X - 1, Size.Y - 1)

Quando usi AssetService:PromptCreateAssetAsync() per pubblicare un oggetto che ha una proprietà Content che si riferisce a un EditableImage , l'immagine modificabile viene pubblicata come un'immagine e la proprietà è impostata su un nuovo ID di risorsa.

Sommario

Proprietà

Metodi

Proprietà

Sola Lettura
Non Replicato
Lettura Parallela

Dimensione del EditableImage in pixel. La dimensione massima è 1024×1024. Tentando di impostare questa proprietà su una dimensione più grande la farà essere appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena appena

Impostando questa proprietà cambia la dimensione canvas dell'immagine modificabile ma non ridimensiona i contenuti. Se cambiando a una dimensione più grande, nuovi pixel vengono impostati su un valore RGBA di [0, 0, 0, 0] . Se cambiando a una dimensione più piccola, i vecchi pixel vengono croccati. Considere di utilizzare

Metodi

Destroy

void

Restituzioni

void

DrawCircle

void

Disegna un cerchio al punto specificato sull' EditableImage . Se il cerchio è semi-trasparente, verrà mescolato con i pixel dietro di esso utilizzando la fonte per la mescolazione.

Parametri

center: Vector2

Centro del cerchio, rispetto all'angolo in alto a sinistra del EditableImage . Le posizioni al di fuori dei confini della tela sono consentite.

radius: number

Raggio del cerchio in pixel.

color: Color3

Colore del cerchio.

transparency: number

Trasparenza del cerchio con 0 essere completamente opaco e 1 essere completamente trasparente.

Come i pixel dell'immagine di origine sono mescolati con i pixel dell'immagine aggiunta.


Restituzioni

void

DrawImage

void

Dota un altro EditableImage in questo EditableImage alla posizione specificata. Le posizioni al di fuori dei confini della tela sono consentite in modo che solo una parte della nuova immagine venga disegnata.

Parametri

position: Vector2

Posizione in cui l'angolo in alto a sinistra dell'immagine aggiunta verrà disegnato.

image: Object

Il EditableImage per trarre in questo EditableImage .

Come i pixel dell'immagine di origine dovrebbero essere mescolati con i pixel dell'immagine aggiunta.


Restituzioni

void

DrawImageProjected

void

Parametri

mesh: Object
projection: Dictionary
brushConfig: Dictionary

Restituzioni

void

DrawImageTransformed

void

Questo metodo ti consente di disegnare un EditableImage in questo EditableImage con le trasformazioni applicate, come lo scala e la rotazione. Il parametro posizione specifica dove il punto di rotazione della nuova immagine sarà posizionato su questa immagine dopo le trasformazioni. Le posizioni al di fuori dei confini della canvas sono consentite in modo che solo parte della nuova immagine venga disegnata.

Parametri

position: Vector2

Posizione in pixel in cui il punto di rotazione della fonte immagine sarà posizionato su questa immagine.

scale: Vector2

Fattori di ridimensionamento per l'immagine di origine lungo gli assi X e Y.

rotation: number

L'angolo di rotazione in gradi, applicato intorno al punto di rotazione della fonte immagine.

image: Object

La fonte EditableImage per essere trascinata in questa immagine.

options: Dictionary

Dizionario opzionale per ulteriori configurazioni:

  • CombineType : Specifica il modo in cui i pixel dell'immagine di origine si mescolano con quelli della destinazione. Il valore predefinito è Enum.ImageCombineType.AlphaBlend .
  • SamplingMode : Specifica il metodo di campionamento (ad esempio Default per bilineari o Pixelated per il vicino vicino). Il predefinito è 0> Enum.ResamplerMode.Default0> .
  • PivotPoint : Specifies the pivot point within the source image for scaling and rotation. Default is the center of the source image (i.e. Image.Size / 2).

Restituzioni

void

Campioni di codice

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

Disegna una linea anti-aliased sul EditableImage uno pixel thick tra i due punti forniti.

Parametri

Inizia il punto della linea.

Punto di fine della linea.

color: Color3

Colore della linea.

transparency: number

Trasparenza della linea.

Come i pixel dell'immagine di origine sono mescolati con i pixel dell'immagine aggiunta.


Restituzioni

void

DrawRectangle

void

Disegna un rettangolo sulla EditableImage di dimensioni specificate all'angolo in alto a sinistra.

Parametri

position: Vector2

Posizione della parte superiore sinistra del rettangolo. A differenza di altri metodi di disegno, questo non può essere al di fuori dei confini della EditableImage .

size: Vector2

Dimensione del rettangolo da disegnare, in pixel.

color: Color3

Colore del rettangolo.

transparency: number

Trasparenza del rettangolo.

Come i pixel dell'immagine di origine sono mescolati con i pixel dell'immagine aggiunta.


Restituzioni

void

ReadPixelsBuffer

Scrivi Parallelo

Una versione di ReadPixels() che restituisce un buffer invece di una tabella. Ogni numero nel buffer è un singolo bit, mentre ogni numero nella tabella è 4 bit, rendendo ReadPixelsBuffer() più efficiente rispetto a ReadPixels() .

Nota che questo metodo utilizza l'alfa invece della trasparenza, a differenza dei metodi di disegno EditableImage .

Parametri

position: Vector2

Angolo in alto a sinistra della regione rettangolare dei pixel da leggere.

size: Vector2

Dimensione della regione rettangolare dei pixel da leggere.


Restituzioni

Buffer in cui ogni pixel è rappresentato da quattro bit (rosso, verde, blu e alpha rispettivamente). La lunghezza del buffer può essere calcolata come Size.X * Size.Y * 4 bit.

Campioni di codice

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 versione di WritePixels() che prende un buffer invece di una tabella. Ogni numero nel buffer è un singolo bit, mentre ogni numero nella tabella è 4 bit, rendendo WritePixelsBuffer() più efficiente di WritePixels() .

Nota che questo metodo utilizza l'alfa invece della trasparenza, a differenza dei metodi di disegno EditableImage .

Parametri

position: Vector2

Angolo in alto a sinistra della regione rettangolare per avvolgere i pixel.

size: Vector2

Dimensione della regione rettangolare dei pixel per scrivere.

buffer: buffer

Un buffer in cui ogni pixel è rappresentato da quattro bit (rosso, verde, blu e alpha rispettivamente). La lunghezza del buffer dovrebbe essere Size.X * Size.Y * 4 bit.


Restituzioni

void

Campioni di codice

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)

Eventi