EditableImage

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible

EditableImage permet la création et la manipulation de l'image au moment de l'exécution.

Pour créer un EditableImage vide, utilisez AssetService:CreateEditableImage(). Pour créer un EditableImage à partir d'une image existante, utilisez 2> Class.AssetService:CreateEditableImageAsync()2>.

Class.EditableImage peut être utilisé dans n'importe quelle propriété Content qui prend une image, telle que ImageLabel.ImageContent ou 0> Class.MeshPart.TextureContent0>. Cela est fait en définissant la propriété de contenu à EditableImage3> .

Le système de coordonnée EditableImage est relatif à le haut à gauche de l'image :

  • Top-gauche: (0, 0)
  • En bas à droite : (Size.X - 1, Size.Y - 1)

Lorsque vous utilisez AssetService:PromptCreateAssetAsync() pour publier un objet qui a une propriété Content qui se réfère à un EditableImage , l'image modifiable est publique comme une image et la propriété est définie sur un nouveau ID de ressource.

Résumé

Propriétés

Méthodes

Propriétés

Lecture uniquement
Non répliqué
Lecture parallèle

Taille de la EditableImage en pixels. La taille maximale est 1024×1024. Essayer de définir cette propriété sur une plus grande taille provoquera qu'elle soit ajustée à 1024.

En définissant cette propriété, le canevas de la image modifiable change la taille de l'image mais ne redimensionne pas les contenus. Si vous changez de taille, de nouveaux pixels seront définis à une valeur RGBA de [0, 0, 0, 0] . Si vous changez de taille, les contenus existants seront cropped. Considérez d'utiliser Class

Méthodes

Destroy

void

Retours

void

DrawCircle

void

Dessine un cercle au point spécifié sur le EditableImage. Si le cercle est semi- transparent, il sera mélangé avec les pixels derrière lui en utilisant la source sur la mélangage.

Paramètres

center: Vector2

Centre du cercle, relative au coin supérieur gauche de la EditableImage. Les positions en dehors des limites du canevas sont autorisées.

radius: number

Rayon du cercle en pixels.

color: Color3

Couleur du cercle.

transparency: number

Transparence du cercle avec 0 étant complètement opaque et 1 étant complètement transparent.

Comment les pixels de l'image source sont mélangés avec les pixels de l'image ajoutée.


Retours

void

DrawImage

void

Dessine un autre EditableImage dans ce EditableImage à l'emplacement donné. Les positions en dehors des limites de la toile sont autorisées afin que seule une partie de la nouvelle image soit dessinée.

Paramètres

position: Vector2

Position à laquelle le coin supérieur gauche de l'image ajoutée sera dessiné.

image: Object

Le EditableImage pour dessiner dans ce EditableImage .

Comment les pixels de l'image source devraient être mélangés avec les pixels de l'image ajoutée.


Retours

void

DrawImageProjected

void

Paramètres

mesh: Object
projection: Dictionary
brushConfig: Dictionary

Retours

void

DrawImageTransformed

void

Cette méthode vous permet de dessiner un EditableImage dans ce EditableImage avec des transformations appliquées, telles que l'échelle et la rotation. Le paramètre de position spécifie l'endroit où le point de pivot de l'image source sera placé sur cette image après les transformations. Les positions en dehors des limites du canevas sont autorisées afin que seuls les nouveaux images soient dessinés.

Paramètres

position: Vector2

Positionnez les points de position dans lesquels le point de pivot de l'image source sera placé sur cette image.

scale: Vector2

Facteurs de mise à l'échelle pour l'image source le long des axes X et Y.

rotation: number

L'angle de rotation en degrés, appliqué autour du point de pivot de l'image source.

image: Object

La source EditableImage à être dessinée dans cette image.

options: Dictionary

Dictionnaire facultatif pour une configuration supplémentaire :

  • CombineType : Spécifie comment les pixels de l'image source se mélent avec ceux de la destination. Par défaut, c'est Enum.ImageCombineType.AlphaBlend.
  • SamplingMode : Spécifie la méthode desamplage (par exemple, Default pour le bilanéaire ou Pixelated pour le voisin le plus proche). Par défaut, c'est 0> Enum.ResamplerMode.Default0> .
  • PivotPoint : Spécifie le point de pivot dans l'image source pour le redimensionnement et la rotation. Par défaut, le centre de l'image source (i.e. Image.Size / 2).

Retours

void

Échantillons de code

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

Dessine une ligne anti-aliée sur le EditableImage un pixel épaisseur entre les deux points fournis.

Paramètres

Démarre le point de la ligne.

Point de fin de la ligne.

color: Color3

Couleur de la ligne.

transparency: number

Transparence de la ligne.

Comment les pixels de l'image source sont mélangés avec les pixels de l'image ajoutée.


Retours

void

DrawRectangle

void

Définit un rectangle sur le EditableImage de la taille donnée à la position supérieure gauche donnée.

Paramètres

position: Vector2

Position du coin supérieur gauche du rectangle. Contrairement aux autres méthodes de dessin, ce ne peut pas être en dehors des limites de la EditableImage .

size: Vector2

Taille du rectangle à dessiner, en pixels.

color: Color3

Couleur du rectangle.

transparency: number

Transparence du rectangle.

Comment les pixels de l'image source sont mélangés avec les pixels de l'image ajoutée.


Retours

void

ReadPixelsBuffer

Écrire en parallèle

Une version de ReadPixels() qui renvoie un tampon au lieu d'une table. Chaque nombre dans le tampon est un seul octet, tandis que chaque nombre dans la table est 4 octets, ce qui rend ReadPixelsBuffer() plus efficace que Class.EditableImage:ReadPixels()|ReadPixels()</

Notez que cette méthode utilise l'Alpha au lieu de la transparence, contrairement aux méthodes de dessin EditableImage.

Paramètres

position: Vector2

Top-gauche du coin rectangulaire des pixels à lu.

size: Vector2

Taille de la région rectangulaire des pixels à lu.


Retours

B tampon où chaque pixel est représenté par quatre octets (rouge, vert, bleu et alpha respectivement). La longueur du tampon peut être calculée comme Size.X * Size.Y * 4 octets.

Échantillons de code

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

Une version de WritePixels() qui prend un tampon au lieu d'une table. Chaque nombre dans le tampon est un seul octet, tandis que chaque nombre dans la table est 4 octets, ce qui rend WritePixelsBuffer() plus efficace que WritePixels().

Notez que cette méthode utilise l'Alpha au lieu de la transparence, contrairement aux méthodes de dessin EditableImage.

Paramètres

position: Vector2

Quartier supérieur gauche de la région rectangulaire pour dessiner les pixels dans.

size: Vector2

Taille de la région rectangulaire des pixels à écrire.

buffer: buffer

Un tampon où chaque pixel est représenté par quatre octets (rouge, vert, bleu et alpha respectivement). La longueur du tampon devrait être Size.X * Size.Y * 4 octets.


Retours

void

Échantillons de code

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)

Évènements