EditableImage
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
EditableImage ile, görüntülerin çalışma anında oluşturulması ve manipüleasyonu sağlanır.
Boş bir EditableImage oluşturmak için, AssetService:CreateEditableImage() kullanın. Mevcut bir EditableImage'i oluşturmak için, 1> Class.AssetService:CreateEditableImageAsync()1> kullanın.
Class.EditableImage Content özelliğindeki herhangi bir içerik kullanılabilir, örneğiniz ImageLabel.ImageContent veya 0> Class.MeshPart.TextureContent0> . Bunu yapmak için içerik özelliğini 3> Datatype.Content.fromObject
Class.EditableImage koordinat sistemi, görüntünün sol üst kısmına dayanmaktadır:
- Sol üst: (0, 0)
- Alt-sağ: (Size.X - 1, Size.Y - 1)
Class.AssetService:PromptCreateAssetAsync() kullanarak bir nesneyi yayınladığınızda, Content özelliğine sahip bir nesneyi referans eden EditableImage ile, edilebilir resim bir resim olarak yayınlanır ve özellik yeni bir varlık ID'siyle ayarlanır.
Yayınlanmış Deneyimler için Düzenleyici Görüntüyü Etkileşime Geç
Güvenlik amaçlı olarak, EditableImage kaynaklarınızı Kimlik doğrulandıvarsayılan olarak gizlidir. EditableImage kullanımını etkinleştirmek için, 13 yaşından daha yaşlı olmalı ve Kim
İzinler
Abus için önlemler, AssetService:CreateEditableImageAsync() sadece görüntü varlıklarını yükleme ve düzenleme izin verir:
- Bu, deneyimin sahibi olan kişinin sahibidir (deneyim bir kişi tarafından sahiplenmişse).
- Bu bir grubun ( deneyim grupsahibi ise ) sahibidir.
- Bu, giriş yapılmış Studio kullanıcısı tarafından sağlanır (yerleşim dosyası Roblox'a henüz kaydedilmedi veya yayınlanmadıysa).
Yukarıdaki kriterlere uymayan bir varlığı yüklemeye çalışırsa API'ler bir hata oluşturur.
Özet
Özellikler
Class.EditableImage'in pikseldeki büyüklüğü.
Yöntemler
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Belirlenen noktada bir çember çizmeyi sağlar.
Bu EditableImage ın içine başka bir şey çizmez. Bu EditableImage ın içine başka bir şey çizmez.
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
Ebatlama ve döndürme dahil olmak üzere dönüşümlere sahip bir grafik ile bu EditableImage ın içine çeker.
İki sağlanan nokta arasında bir satır çizilir.
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
Verilen boyutun üst kısmındaki bir kare çizilir.
Pixel'lerin bir kare bölgesini bir tampona okur.
Görüntüye dikdörtgen bir piksel bölgesi yazılır.
Etkinlikler
Özellikler
Size
Boyutu EditableImage 像'de. Maksimum boyut 1024×1024. Bir EditableImage küçültülemez; bu özellik sadece okunur. İçeriği
Yöntemler
Destroy
Görüntünün içeriklerini yok eder ve anında kullanılmış belleği geri alır.
Dönüşler
DrawCircle
Class.EditableImage ile belirlenen noktada bir çember çeker. Çember semi-şeffafsa, kaynağın arkasındaki pikselle karışacaktır.
Parametreler
Çemberin sol üst köşesine, EditableImage ile ilgili üst kısma. Dış çizgi öğeleri izinlidir.
Çemberin pikselindeki çevre.
Çemberin rengi.
0'ın tamamen opak olması ve 1'in tamamen şeffaflığı.
Kaynağın görüntüsüyle eklenen görüntünün pikseli nasıl karıştırılır.
Dönüşler
DrawImage
Bu EditableImage ın içine bir başka Class.EditableImage çizilir. Bölgelerin dışındaki pozisyonlar izin verilir, böylece yeni görüntünün sadece bir kısmı çizilir.
Parametreler
Eklenen görünümün sol üst köşesinin çizileceği konum.
Bu EditableImage içine çizmek için.
Kaynağın görüntüsünün eklenen görüntüyle nasıl karıştırılacağı.
Dönüşler
DrawImageProjected
Parametreler
Dönüşler
DrawImageTransformed
Bu yöntem, EditableImage ile bu EditableImage arasında dönüştürme uygulanmış, böylece küçültme ve döndürme gibi işlemler yapılmıştır. Pozisyon değiştirgesi, kaynağın yeni görüntüsünün nerede bu görüntüye yerleştirileceğini belirtir, böylece yeni görü
Parametreler
Kaynağın görüntüsünün pivot noktasının bu görüntüye yerleştirileceği pikseldeki konum.
X ve Y eksenlerinde kaynağın görüntüsü için ölçekleme faktörleri.
Kaynağın görüntüsünün pivot noktası etrafında uygulanan dönme açısı.
Bu resimde çizilecek kaynağın EditableImage olması gerekir.
Ekstra yapılandırma için opcional sözlük:
- CombineType : Kaynağın görüntüsünün hedef ile nasıl karıştığını belirtir.Varsayılan şu şekildedir. Enum.ImageCombineType.AlphaBlend .
- SamplingMode : Özellikleme yöntemini belirtir (örneğin, Default için bilinebilir veya Pixelated için en yakın komşu için).Varsayılan, 0> SamplingMode1>0> .
- PivotPoint : Kaynağın görüntüsündeki pivot noktasını belirtir.Varsayılan, kaynağın görüntüsündeki merkezidir (yani Image.Size / 2).
Dönüşler
Kod Örnekleri
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
İki verilen nokta arasındaki EditableImage bir antialiasi çizgisi çiziyor.
Parametreler
Çizginin başlangıcını.
Çizginin son noktası.
Hatın rengi.
Çizginin透明liği.
Kaynağın görüntüsüyle eklenen görüntünün pikseli nasıl karıştırılır.
Dönüşler
DrawRectangle
Verilen boyutta EditableImage taraftaki sağ üst kısma olan bir kare çizilir.
Parametreler
Topun sol üst kısmında bulunur. Diğer çizim yöntemlerinden farklı olarak, bu EditableImage kanvasının dışında olabilir.
Çizilecek olan kareğin boyutu, piksel olarak.
Dikdörtgenin rengi.
Dikdörtgenin Saydamlığı.
Kaynağın görüntüsüyle eklenen görüntünün pikseli nasıl karıştırılır.
Dönüşler
ReadPixelsBuffer
Class.EditableImage:ReadPixels()|ReadPixels() bir tablo yerine bir tampon döndürür. Her tabloyu oluşturan sayının bir tek başına bir başına bir başına bir başına bir başına bir başına bir başına bir başına bir başına bir başına b
Bu yöntemin transparansızlık yerine alfa kullandığını, EditableImage çizim yöntemlerinden farklı olduğunu unutmayın.
Parametreler
Okuyacak piksel bölgesinin sol üst kısmı.
Okuyacak piksel bölgesinin boyutu.
Dönüşler
Her pikselin dört başlıca (kırmızı, yeşil, mavi ve alfa) temsil edildiği bir başvuru alanı. Buffer'nin uzunluğu Size.X * Size.Y * 4 başvuru boyutları olarak hesaplanabilir.
Kod Örnekleri
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
Bir tablo yerine bir tampon alır. Bu, tamponun her bir sayısının 4 bit olması yerine bir tek birimeyi temsil eder. WritePixels() daha az belleğe alan kullanır, böylece Class.EditableImage:WritePixels()|WritePixels()</
Bu yöntemin transparansızlık yerine alfa kullandığını, EditableImage çizim yöntemlerinden farklı olduğunu unutmayın.
Parametreler
Pikseli çekmek için sağ bölgeyi sol kısma çevirin.
Yazmak için piksel'in dikdörtgen bölgesinin büyüklüğü.
Her pikselin dört başlıca (kırmızı, yeşil, mavi ve alfa) temsil edildiği bir tampon. Buffer'nin uzunluğu Size.X * Size.Y * 4 bytes olmalıdır.
Dönüşler
Kod Örnekleri
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)