EditableImage

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

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

Eigenschaften

Methoden

Eigenschaften

Schreibgeschützt
Nicht repliziert
Parallel lesen

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

void

Rückgaben

void

DrawCircle

void

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

center: Vector2

Zentrum des Kreises, relativ zum oberen linken Ecke des EditableImage. Positionen außerhalb der Leinwandgrenzen sind erlaubt.

radius: number

Radius des Kreises in Pixel.

color: Color3

Farbe des Kreises.

transparency: number

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

void

DrawImage

void

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: Vector2

Position, bei der die obere linke Ecke des hinzugefügten Bildes gezeichnet wird.

image: Object

Das EditableImage zum Ziehen in diesen EditableImage .

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt sein sollten.


Rückgaben

void

DrawImageProjected

void

Parameter

mesh: Object
projection: Dictionary
brushConfig: Dictionary

Rückgaben

void

DrawImageTransformed

void

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: Vector2

Position in Pixel, an der der Pivot Point der Quelle auf dieser Bild wird platziert.

scale: Vector2

Skalierungsfaktoren für das Quellbild entlang der Achsen X und Y.

rotation: number

Der Grad drehung in Grad, der um den Pivot-Punkt der Quellebild angewendet wird.

image: Object

Die Quelle EditableImage zu diesem Bild zu ziehen.

options: Dictionary

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

void

Code-Beispiele

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

Zieht eine anti-aliased-Linie auf dem EditableImage eines Pixels zwischen den beiden angegebenen Punkten.

Parameter

Beginnen Sie mit der Zeile.

Endpunkt der Linie.

color: Color3

Farbe der Linie.

transparency: number

Transparenz der Linie.

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt werden.


Rückgaben

void

DrawRectangle

void

Zieht ein Rechteck auf dem EditableImage der angegebenen Größe in der oberen linken Position.

Parameter

position: Vector2

Position des oberen linken Randes des Rechtecks. Anders als bei anderen Zeichungsmethoden kann dies nicht außerhalb der EditableImage -Kante liegen.

size: Vector2

Größe des Rechtecks, das gezeichnet werden soll, in Pixeln.

color: Color3

Farbe des Rechtecks.

transparency: number

Transparenz des Rechtecks.

Wie die Pixel des Quellbildes mit den Pixeln des hinzugefügten Bildes gemischt werden.


Rückgaben

void

ReadPixelsBuffer

Parallel schreiben

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

position: Vector2

Oberes linkes Eck der rechteckigen Region der Pixel zum gelesen.

size: Vector2

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

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

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

position: Vector2

Obere linke Ecke der rechteckigen Region, um die Pixel hineinzuziehen.

size: Vector2

Größe der rechteckigen Region der Pixel, die geschrieben werden soll.

buffer: buffer

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

void

Code-Beispiele

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)

Ereignisse