EditableImage
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
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é
Méthodes
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Dessine un cercle au point spécifié.
Dessine un autre EditableImage dans ce EditableImage à l'emplacement donné.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
Dessine une image dans ce EditableImage avec des transformations telles que l'échelle et la rotation, le plaçant à la position spécifiée.
Dessine une ligne entre deux points fournis.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Dessine un rectangle de la taille donnée à la position de haut à gauche donnée.
Lit une région rectangulaire de pixels dans un tampon.
Écrit une région rectangulaire de pixels dans l'image.
Évènements
Propriétés
Size
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
Retours
DrawCircle
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
Centre du cercle, relative au coin supérieur gauche de la EditableImage. Les positions en dehors des limites du canevas sont autorisées.
Rayon du cercle en pixels.
Couleur du cercle.
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
DrawImage
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 à laquelle le coin supérieur gauche de l'image ajoutée sera dessiné.
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
DrawImageProjected
Paramètres
Retours
DrawImageTransformed
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
Positionnez les points de position dans lesquels le point de pivot de l'image source sera placé sur cette image.
Facteurs de mise à l'échelle pour l'image source le long des axes X et Y.
L'angle de rotation en degrés, appliqué autour du point de pivot de l'image source.
La source EditableImage à être dessinée dans cette image.
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
Échantillons de code
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
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.
Couleur de la ligne.
Transparence de la ligne.
Comment les pixels de l'image source sont mélangés avec les pixels de l'image ajoutée.
Retours
DrawRectangle
Définit un rectangle sur le EditableImage de la taille donnée à la position supérieure gauche donnée.
Paramètres
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 .
Taille du rectangle à dessiner, en pixels.
Couleur du rectangle.
Transparence du rectangle.
Comment les pixels de l'image source sont mélangés avec les pixels de l'image ajoutée.
Retours
ReadPixelsBuffer
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
Top-gauche du coin rectangulaire des pixels à lu.
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
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
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
Quartier supérieur gauche de la région rectangulaire pour dessiner les pixels dans.
Taille de la région rectangulaire des pixels à écrire.
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
Échantillons de code
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)