EditableImage
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
EditableImage ermöglicht die Laufzeit-Erstellung und Manipulation von Bildern.
Um ein leeres EditableImage zu erstellen, verwenden Sie AssetService:CreateEditableImage(). Um ein EditableImage aus einem bestehenden Bild zu erstellen, verwenden Sie 1> Class.AssetService:CreateEditableImageAsync()1>.
Class.EditableImage kann in jedem Content -Eigenschaft verwendet werden, die ein Bild erstellt, z. B. ImageLabel.ImageContent oder 0> Class.MeshPart.TextureContent0>. Dies wird durch das Festlegen der Inhalts属性 auf EditableImage3> getan.
Das EditableImage Koordinatensystem ist relativ zu der oberen linken Seite des Bildes:
- Top-Links: (0, 0)
- Unter-rechts: (Size.X - 1, Size.Y - 1)
Wenn Sie AssetService:PromptCreateAssetAsync() verwenden, um ein Objekt zu veröffentlichen, das eine Content -Eigenschaft hat, die auf ein EditableImage verweist, wird das editable Bild als Bild veröffentlicht und die Eigenschaft auf eine neue Asset-ID festgelegt.
Zusammenfassung
Methoden
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Zieht einen Kreis an der angegebenen Stelle.
Zieht einen weiteren EditableImage in diesen EditableImage an der angegebenen Position.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
Zieht ein Bild in dieses EditableImage mit Transformationen, einschließlich Skalierung und Rotation, und platziert es an der angegebenen Position.
Zieht eine Linie zwischen zwei angegebenen Punkten.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Zieht ein Rechteck der angegebenen Größe in der angegebenen oberen linken Position.
Lässt eine rechteckige Region von Pixel in einen Buffer.
Schreibt eine rechteckige Region von Pixeln in das Bild.
Ereignisse
Eigenschaften
Size
Größe des EditableImage in Pixel. Die maximale Größe beträgt 1024×1024. Wenn Sie versuchen, diese Eigenschaft auf eine größere Größe zu setzen, wird sie auf 1024 geklippt.
Durch das Festlegen dieser Eigenschaft ändert sich die Kanvas-Größe des bearbeitbaren Bildes, aber die Inhalte werden nicht skaliert. Wenn Sie auf eine größere Größe festlegen, werden neue Pixel auf einen RGBA-Wert von [0, 0, 0, 0] festgelegt. Wenn Sie auf eine kleinere Größe festlegen, werden die bestehenden P
Methoden
Destroy
Rückgaben
DrawCircle
Zieht einen Kreis an der angegebenen Stelle auf der EditableImage. Wenn der Kreis halbtransparent ist, wird er mit den Pixeln hinter dem verwendet, um die Quelle über Blenden zu mischen.
Parameter
Zentrum des Kreises, relativ zum oberen linken Ecke des EditableImage. Positionen außerhalb der Leinwandgrenzen sind erlaubt.
Radius des Kreises in Pixel.
Farbe des Kreises.
Transparenz des Kreises mit 0 vollständig und 1 vollständig.
Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt werden.
Rückgaben
DrawImage
Zieht einen weiteren EditableImage in dieses EditableImage an der angegebenen Position. Positionen außerhalb der Kantengrenzen sind erlaubt, so dass nur ein Teil des neuen Bilds gezeichnet wird.
Parameter
Position, bei der die obere linke Ecke des hinzugefügten Bildes gezeichnet wird.
Das EditableImage zum Ziehen in diesen EditableImage .
Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt sein sollten.
Rückgaben
DrawImageProjected
Parameter
Rückgaben
DrawImageTransformed
Diese Methode ermöglicht es Ihnen, ein EditableImage in diesen EditableImage mit Anwendung von Transformationen, wie Skalierung und Rotation, einzubringen, wobei der Positionsparameter angeben wird, wo der Pivot-Punkt der Quellbild auf dieser Bild nach Transformationen platziert wird. Positionen außerhalb der Zeichenkante sind erlaubt, so dass nur ein Teil des neuen Bilds gezeichnet wird.
Parameter
Position in Pixel, an der der Pivot Point der Quelle auf dieser Bild wird platziert.
Skalierungsfaktoren für das Quellbild entlang der Achsen X und Y.
Der Grad drehung in Grad, der um den Pivot-Punkt der Quellebild angewendet wird.
Die Quelle EditableImage zu diesem Bild zu ziehen.
Optionale Diktion für zusätzliche Konfiguration:
- CombineType : Gibt an, wie die Pixel der Quellbilddatei mit denen der Zieldatei mischen. Standard ist Enum.ImageCombineType.AlphaBlend .
- SamplingMode : gibt den Sammelmodus (z. B. Default für bilineare oder Pixelated für den nächsten Nachbarn) an. Standard ist 0> enum.resamplerMode.DEFAULT0>.
- PivotPoint : Gibt den Pivot-Point innerhalb der Quellbild für Skalierung und Rotation an. Standard ist die Mitte des Quellbilds (z. B. Image.Size / 2 ).
Rückgaben
Code-Beispiele
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
Zieht eine anti-aliased-Linie auf dem EditableImage eines Pixels zwischen den beiden angegebenen Punkten.
Parameter
Beginnen Sie mit der Zeile.
Endpunkt der Linie.
Farbe der Linie.
Transparenz der Linie.
Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt werden.
Rückgaben
DrawRectangle
Zieht ein Rechteck auf dem EditableImage der angegebenen Größe in der oberen linken Position.
Parameter
Position des oberen linken Randes des Rechtecks. Anders als bei anderen Zeichungsmethoden kann dies nicht außerhalb der EditableImage -Kante liegen.
Größe des Rechtecks, das gezeichnet werden soll, in Pixeln.
Farbe des Rechtecks.
Transparenz des Rechtecks.
Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt werden.
Rückgaben
ReadPixelsBuffer
Eine Version von ReadPixels() , die eine Tabelle anstelle eines Buffers zurückgibt. Jede Zahl in der Tabelle ist ein einzelnes Byte, während jede Zahl in der Buffer 4 Bytes ist, was ReadPixelsBuffer() effizienter ist als Class.EditableImage:ReadPixels()
Beachten Sie, dass diese Methode Alpha anstelle von Transparenz verwendet, im Gegensatz zu den EditableImage Zeichmethoden.
Parameter
Oberes linkes Eck der rechteckigen Region der Pixel zum gelesen.
Größe der rechteckigen Region der Pixel zum gelesen.
Rückgaben
Puffer, in dem jedes Pixel durch vier Bytes (rot, grün, blau und Alpha) repräsentiert ist. Die Länge des Puffs kann als Size.X * Size.Y * 4 Bytes berechnet werden.
Code-Beispiele
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
Eine Version von WritePixels() , die stattdessen einen Buffer verwendet, anstatt einer Tabelle. Jede Zahl in der Buffer ist ein einzelnes Byte, während jede Zahl in der Tabelle 4 Bytes ist, was WritePixelsBuffer() effizienter macht als Class.EditableImage:WriteP
Beachten Sie, dass diese Methode Alpha anstelle von Transparenz verwendet, im Gegensatz zu den EditableImage Zeichmethoden.
Parameter
Obere linke Ecke der rechteckigen Region, um die Pixel hineinzuziehen.
Größe der rechteckigen Region der Pixel, die geschrieben werden soll.
Ein tamper-Cache, bei dem jedes Pixel durch vier Bytes (rot, grün, blau und Alpha) repräsentiert wird. Die Länge des Tamper-Caches sollte Size.X * Size.Y * 4 Bytes betragen.
Rückgaben
Code-Beispiele
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)