EditableImage
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
EditableImage สามารถใช้งานได้สำหรับการสร้างและจัดการภาพ
เพื่อสร้าง EditableImage ที่ว่างเปล่า ใช้ AssetService:CreateEditableImage() เพื่อสร้าง EditableImage จากภาพที่มีอยู่ ใช้ 2> Class.AssetService:CreateEditableImageAsync()2> เพื่อสร้าง 5> Class.Editable
EditableImage สามารถใช้ในสมบัติสมบัติ Content ที่ใช้รูปภาพเช่น ImageLabel.ImageContent หรือ 0> Class.MeshPart.TextureContent0> ได้ นี่สามารถทำได
ระบบ EditableImage จะมีตำแหน่งสี่เหลี่ยมผืนผ้าที่ด้านบนซ้ายของรูปภาพ:
- ด้านบนซ้าย: (0, 0)
- ด้านล่างขวา: (Size.X - 1, Size.Y - 1)
เมื่อคุณใช้ AssetService:PromptCreateAssetAsync() เพื่อเผยแพร่วัตถุที่มีสมบัติสินค้า Content โดยอ้างอิงถึง EditableImage วัตถุที่เป็นไอเท็มจะเผยแพร่เป็นรูปภาพและตั้
เปิดใช้งาน EditableImage สำหรับประสบการณ์ที่เผยแพร่
สำหรับวัตถุประสงค์ด้านความปลอดภัย การใช้ EditableImage ล้มเหลวโดยปกติสำหรับประสบการณ์ที่เผยแพร่ เพื่อเปิดใช้งาน
สิทธิ
เพื่อป้องกันการใช้งานผิดปกติ AssetService:CreateEditableImageAsync() อนุญาตให้คุณโหลดและแก้ไขเท่านั้น:
- นั่นเป็นของผู้สร้างประสบการณ์ (ถ้าประสบการณ์เป็นของบุคคล)
- นั่นเป็นของกลุ่ม (หากประสบการณ์เป็นของกลุ่ม)
- นั่นเป็นของผู้ใช้ Studio ที่ล็อกอินแล้ว (หากไฟล์สถานที่ยังไม่ได้บันทึกหรือเผยแพร่ไปยัง Roblox)
หากใช้ API เพื่อโหลดสินทรัพย์ที่ไม่ตรงตามเกณฑ์ด้านบน
สรุป
วิธีการ
- DrawCircle(center : Vector2,radius : number,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
วาดวงกลมที่จุดที่กำหนด
วาด EditableImage อื่น ๆ ในตําแหน่งนี้ EditableImage ที่มี
- DrawImageTransformed(position : Vector2,scale : Vector2,rotation : number,image : Object,options : Dictionary?):void
วาดรูปภาพนี้เป็น EditableImage ด้วยการเปลี่ยนแปลงรวมถึงการเพิ่มขนาดและการหมุนมันให้อยู่ในตำแหน่งที่กำหนด
วาดเส้นสี่ของสองจุดที่ให้
- DrawRectangle(position : Vector2,size : Vector2,color : Color3,transparency : number,combineType : Enum.ImageCombineType):void
วาดรูปสี่เหลี่ยมผืนผ้าที่มีขนาดที่กำหนดไว้ที่ตำแหน่งด้านบนซ้าย
อ่านภาพลายเมาส์ที่เป็นรูปสี่เหลี่ยมผืนผ้าเป็นบุฟเฟอร์
เขียนภาพลึกลับของพิกเซลในภาพ
คุณสมบัติ
วิธีการ
Destroy
ทำลายเนื้อหาของรูปภาพโดยทันที เรียกร้องพื้นที่หน่วยความจำที่ใช้แล้ว
ส่งค่ากลับ
DrawCircle
วาดวงกลมที่จุดที่กำหนดบน EditableImage หากวงกลมเป็นวงกลมที่เป็นเส้นสี จะถูกผสานกับพิกเซลที่อยู่เบื้องหลังโดยใช้เวลาผสานเหนือการผสาน
พารามิเตอร์
ตรงกลางของวงกลม สมมติว่าเป็นมุมด้านบนซ้ายของ EditableImage ตำแหน่งภายนอกของพื้นผิวจะได้รับการอนุญาต
รัศมีของวงกลมในพิกเซล
สีของวงกลม
ความโปร่งใสของวงกลมที่ 0 เป็นเป็นอุโมมะมีความโปร่งใส 1 เป็นเป็นอุโมมะมีความโปร่งใส
วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา
ส่งค่ากลับ
DrawImage
วาด EditableImage อื่น ๆ ในตําแหน่งนี้ EditableImage ที่ให้ไว้ ตําแหน่งภายนอกขอบเขตกระบวนการวาดอนุญาตให้วาดเฉพาะส่วนของภาพใหม่เท่านั้น
พารามิเตอร์
ตําแหน่งที่ด้านซ้ายบนของรูปภาพที่เพิ่มได้จะถูกวาด
The EditableImage เพื่อวาดเข้าสู่ this EditableImage .
วิธีที่พิกเซลของรูปภาพที่เป็นแหล่งจะผสานกับพิกเซลของรูปภาพที่เพิ่มเติม
ส่งค่ากลับ
DrawImageProjected
พารามิเตอร์
ส่งค่ากลับ
DrawImageTransformed
วิธีนี้ช่วยให้คุณวาด EditableImage ใน EditableImage ด้วยการเปลี่ยนแปลงที่ประยุกต์ใช้ เช่น การเพิ่มขนาด และการหมุน ตัวแปรตำแหน่งระบุว่าจุดศูนย์กลางของ
พารามิเตอร์
ตําแหน่งในพิกเซลที่จุดศูนย์กลางของรูปแบบจะถูกวางบนรูปนี้
ตัวชี้วัดการปรับขนาดสำหรับรูปภาพต้นฉบับบนแกน X และ Y
มุมหมุนในองศาที่ใช้รอบจุดศูนย์กลางของตัวอ้าง
ที่มา EditableImage ที่จะถูกวาดเข้าสู่รูปภาพนี้
พจนานามัยเพิ่มเติมสำหรับการกำหนดค่าเพิ่มเติม:
- CombineType : ระบุวิธีการที่พิกเซลของรูปภาพที่เป็นพิกเซลของแหล่งข้อมูลผสานกับพิกเซลของเป้าหมาย ปกติคือ Enum.ImageCombineType.AlphaBlend
- SamplingMode : กำหนดวิธีการตัวอย่าง (เช่น Default สำหรับ bilinear หรือ Pixelated สำหรับเพื่อนบ้านที่ใกล้ที่สุด) ค่าเริ่มต้นคือ 0> Enum.ResamplerMode.Default0>
- PivotPoint : ระบุจุดศูนย์กลางภายในภาพเริ่มต้นสำหรับการเพิ่มขนาดและการหมุน ปกติจะเป็นศูนย์กลางของภาพเริ่มต้น (คือ Image.Size / 2 )
ส่งค่ากลับ
ตัวอย่างโค้ด
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
วาดเส้นสายต่อต้านอาลีเอซี่บน EditableImage หนึ่งพิกเซลบางระหว่างสองจุดที่ให้
พารามิเตอร์
จุดเริ่มต้นของสาย
จุดสิ้นสุดของสาย
สีของสาย
ความโปร่งใสของสาย
วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา
ส่งค่ากลับ
DrawRectangle
วาดรูปสี่เหลี่ยมผืนผ้าบน EditableImage ขนาดที่กำหนดที่ด้านบนซ้าย
พารามิเตอร์
ตําแหน่งของด้านซ้ายบนของสี่เหลี่ยมผืนผ้า. ในขณะที่วิธีการวาดอื่น ๆ จะไม่สามารถออกจากเขตของผ้า EditableImage ได้
ขนาดของพิกเซลที่ต้องวาดในแนวตั้ง
สีของสี่เหลี่ยมผืนผ้า
ความโปร่งใสของรูปสี่เหลี่ยม
วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา
ส่งค่ากลับ
ReadPixelsBuffer
เวอร์ชันของ ReadPixels() ที่ส่งคืนบุฟเฟอร์แทนที่จะเป็นตาราง ทุกตัวอักษรในบุฟเฟอร์เป็นบาทเดียว ในขณะที่ทุกตัวอ
โปรดทราบว่าวิธีนี้ใช้อัลฟาแทนที่จะใช้เมทรอนิกส์ในการวาดเมื่อเปรียบเทียบกับวิธีการวาดของ EditableImage
พารามิเตอร์
ส่งค่ากลับ
บุฟเฟอร์ที่แสดงแต่ละพิกเซลโดยสี่บาท (สีแดง, สีเขียว, สีน้ําเงิน และ alpha ตามลําดับ) ความยาวของบุฟเฟอร์สามารถคํานวณได้เป็น Size.X * Size.Y * 4 บาท
ตัวอย่างโค้ด
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
ฉบับหนึ่งของ WritePixels() ซึ่งใช้บุฟเฟอร์ที่เป็นตารางแทนที่จะเป็น แต่ละหมายเลขในบุฟเฟอร์เป็นไบท์เดียว ในขณะที
โปรดทราบว่าวิธีนี้ใช้อัลฟาแทนที่จะใช้เมทรอนิกส์ในการวาดเมื่อเปรียบเทียบกับวิธีการวาดของ EditableImage
พารามิเตอร์
มุมด้านซ้ายบนของภาคสี่เหลี่ยมเพื่อดึงพิกเซลเข้ามา
ขนาดของพื้นที่ขนาดสี่เหลี่ยมของพิกเซลที่จะเขียน
บุฟเฟอร์ที่แสดงแต่ละพิกเซลโดยสี่บาท (สีแดง, สีเขียว, สีน้ําเงิน, และ alpha ตามลําดับ) ความยาวของบุฟเฟอร์ควรจะเป็น Size.X * Size.Y * 4 บาท
ส่งค่ากลับ
ตัวอย่างโค้ด
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)