EditableImage
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
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à
Dimensione del EditableImage in pixel.
Metodi
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Disegna un cerchio al punto specificato.
Disegna un altro EditableImage in questo EditableImage alla posizione specificata.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
Disegna un'immagine in questo EditableImage con trasformazioni tra cui la scala e la rotazione, posizionandola nella posizione specificata.
Dipinge una linea tra i due punti forniti.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Disegna un rettangolo della dimensione specificata nella posizione in alto a sinistra.
Legge una regione rettangolare di pixel in un buffer.
Scrive una regione rettangolare di pixel nell'immagine.
Proprietà
Size
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
Restituzioni
DrawCircle
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
Centro del cerchio, rispetto all'angolo in alto a sinistra del EditableImage . Le posizioni al di fuori dei confini della tela sono consentite.
Raggio del cerchio in pixel.
Colore del cerchio.
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
DrawImage
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
Posizione in cui l'angolo in alto a sinistra dell'immagine aggiunta verrà disegnato.
Il EditableImage per trarre in questo EditableImage .
Come i pixel dell'immagine di origine dovrebbero essere mescolati con i pixel dell'immagine aggiunta.
Restituzioni
DrawImageProjected
Parametri
Restituzioni
DrawImageTransformed
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
Posizione in pixel in cui il punto di rotazione della fonte immagine sarà posizionato su questa immagine.
Fattori di ridimensionamento per l'immagine di origine lungo gli assi X e Y.
L'angolo di rotazione in gradi, applicato intorno al punto di rotazione della fonte immagine.
La fonte EditableImage per essere trascinata in questa immagine.
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
Campioni di codice
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
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.
Colore della linea.
Trasparenza della linea.
Come i pixel dell'immagine di origine sono mescolati con i pixel dell'immagine aggiunta.
Restituzioni
DrawRectangle
Disegna un rettangolo sulla EditableImage di dimensioni specificate all'angolo in alto a sinistra.
Parametri
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 .
Dimensione del rettangolo da disegnare, in pixel.
Colore del rettangolo.
Trasparenza del rettangolo.
Come i pixel dell'immagine di origine sono mescolati con i pixel dell'immagine aggiunta.
Restituzioni
ReadPixelsBuffer
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
Angolo in alto a sinistra della regione rettangolare dei pixel da leggere.
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
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 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
Angolo in alto a sinistra della regione rettangolare per avvolgere i pixel.
Dimensione della regione rettangolare dei pixel per scrivere.
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
Campioni di codice
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)