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 เพื่อโหลดสินทรัพย์ที่ไม่ตรงตามเกณฑ์ด้านบน

สรุป

คุณสมบัติ

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    ขนาดของ EditableImage ในพิกเซล

วิธีการ

คุณสมบัติ

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

ขนาดของ EditableImage ในพิกเซล ขนาดสูงสุดคือ 1024×1024 ขนาด EditableImage ไม่สามาร

วิธีการ

Destroy

void

ทำลายเนื้อหาของรูปภาพโดยทันที เรียกร้องพื้นที่หน่วยความจำที่ใช้แล้ว


ส่งค่ากลับ

void

DrawCircle

void

วาดวงกลมที่จุดที่กำหนดบน EditableImage หากวงกลมเป็นวงกลมที่เป็นเส้นสี จะถูกผสานกับพิกเซลที่อยู่เบื้องหลังโดยใช้เวลาผสานเหนือการผสาน

พารามิเตอร์

center: Vector2

ตรงกลางของวงกลม สมมติว่าเป็นมุมด้านบนซ้ายของ EditableImage ตำแหน่งภายนอกของพื้นผิวจะได้รับการอนุญาต

radius: number

รัศมีของวงกลมในพิกเซล

color: Color3

สีของวงกลม

transparency: number

ความโปร่งใสของวงกลมที่ 0 เป็นเป็นอุโมมะมีความโปร่งใส 1 เป็นเป็นอุโมมะมีความโปร่งใส

วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา


ส่งค่ากลับ

void

DrawImage

void

วาด EditableImage อื่น ๆ ในตําแหน่งนี้ EditableImage ที่ให้ไว้ ตําแหน่งภายนอกขอบเขตกระบวนการวาดอนุญาตให้วาดเฉพาะส่วนของภาพใหม่เท่านั้น

พารามิเตอร์

position: Vector2

ตําแหน่งที่ด้านซ้ายบนของรูปภาพที่เพิ่มได้จะถูกวาด

image: Object

The EditableImage เพื่อวาดเข้าสู่ this EditableImage .

วิธีที่พิกเซลของรูปภาพที่เป็นแหล่งจะผสานกับพิกเซลของรูปภาพที่เพิ่มเติม


ส่งค่ากลับ

void

DrawImageProjected

void

พารามิเตอร์

mesh: Object
projection: Dictionary
brushConfig: Dictionary

ส่งค่ากลับ

void

DrawImageTransformed

void

วิธีนี้ช่วยให้คุณวาด EditableImage ใน EditableImage ด้วยการเปลี่ยนแปลงที่ประยุกต์ใช้ เช่น การเพิ่มขนาด และการหมุน ตัวแปรตำแหน่งระบุว่าจุดศูนย์กลางของ

พารามิเตอร์

position: Vector2

ตําแหน่งในพิกเซลที่จุดศูนย์กลางของรูปแบบจะถูกวางบนรูปนี้

scale: Vector2

ตัวชี้วัดการปรับขนาดสำหรับรูปภาพต้นฉบับบนแกน X และ Y

rotation: number

มุมหมุนในองศาที่ใช้รอบจุดศูนย์กลางของตัวอ้าง

image: Object

ที่มา EditableImage ที่จะถูกวาดเข้าสู่รูปภาพนี้

options: Dictionary

พจนานามัยเพิ่มเติมสำหรับการกำหนดค่าเพิ่มเติม:

  • CombineType : ระบุวิธีการที่พิกเซลของรูปภาพที่เป็นพิกเซลของแหล่งข้อมูลผสานกับพิกเซลของเป้าหมาย ปกติคือ Enum.ImageCombineType.AlphaBlend
  • SamplingMode : กำหนดวิธีการตัวอย่าง (เช่น Default สำหรับ bilinear หรือ Pixelated สำหรับเพื่อนบ้านที่ใกล้ที่สุด) ค่าเริ่มต้นคือ 0> Enum.ResamplerMode.Default0>
  • PivotPoint : ระบุจุดศูนย์กลางภายในภาพเริ่มต้นสำหรับการเพิ่มขนาดและการหมุน ปกติจะเป็นศูนย์กลางของภาพเริ่มต้น (คือ Image.Size / 2 )

ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

วาดเส้นสายต่อต้านอาลีเอซี่บน EditableImage หนึ่งพิกเซลบางระหว่างสองจุดที่ให้

พารามิเตอร์

จุดเริ่มต้นของสาย

จุดสิ้นสุดของสาย

color: Color3

สีของสาย

transparency: number

ความโปร่งใสของสาย

วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา


ส่งค่ากลับ

void

DrawRectangle

void

วาดรูปสี่เหลี่ยมผืนผ้าบน EditableImage ขนาดที่กำหนดที่ด้านบนซ้าย

พารามิเตอร์

position: Vector2

ตําแหน่งของด้านซ้ายบนของสี่เหลี่ยมผืนผ้า. ในขณะที่วิธีการวาดอื่น ๆ จะไม่สามารถออกจากเขตของผ้า EditableImage ได้

size: Vector2

ขนาดของพิกเซลที่ต้องวาดในแนวตั้ง

color: Color3

สีของสี่เหลี่ยมผืนผ้า

transparency: number

ความโปร่งใสของรูปสี่เหลี่ยม

วิธีที่พิกเซลของรูปภาพที่เป็นพิกเซลของรูปภาพที่เพิ่มเข้ามา


ส่งค่ากลับ

void

ReadPixelsBuffer

เขียนพร้อมๆ กัน

เวอร์ชันของ ReadPixels() ที่ส่งคืนบุฟเฟอร์แทนที่จะเป็นตาราง ทุกตัวอักษรในบุฟเฟอร์เป็นบาทเดียว ในขณะที่ทุกตัวอ

โปรดทราบว่าวิธีนี้ใช้อัลฟาแทนที่จะใช้เมทรอนิกส์ในการวาดเมื่อเปรียบเทียบกับวิธีการวาดของ EditableImage

พารามิเตอร์

position: Vector2

อ่านแล้ว

size: Vector2

ขนาดของพื้นที่ขนาดสี่เหลี่ยมที่อ่าน


ส่งค่ากลับ

บุฟเฟอร์ที่แสดงแต่ละพิกเซลโดยสี่บาท (สีแดง, สีเขียว, สีน้ําเงิน และ alpha ตามลําดับ) ความยาวของบุฟเฟอร์สามารถคํานวณได้เป็น Size.X * Size.Y * 4 บาท

ตัวอย่างโค้ด

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

ฉบับหนึ่งของ WritePixels() ซึ่งใช้บุฟเฟอร์ที่เป็นตารางแทนที่จะเป็น แต่ละหมายเลขในบุฟเฟอร์เป็นไบท์เดียว ในขณะที

โปรดทราบว่าวิธีนี้ใช้อัลฟาแทนที่จะใช้เมทรอนิกส์ในการวาดเมื่อเปรียบเทียบกับวิธีการวาดของ EditableImage

พารามิเตอร์

position: Vector2

มุมด้านซ้ายบนของภาคสี่เหลี่ยมเพื่อดึงพิกเซลเข้ามา

size: Vector2

ขนาดของพื้นที่ขนาดสี่เหลี่ยมของพิกเซลที่จะเขียน

buffer: buffer

บุฟเฟอร์ที่แสดงแต่ละพิกเซลโดยสี่บาท (สีแดง, สีเขียว, สีน้ําเงิน, และ alpha ตามลําดับ) ความยาวของบุฟเฟอร์ควรจะเป็น Size.X * Size.Y * 4 บาท


ส่งค่ากลับ

void

ตัวอย่างโค้ด

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)

อีเวนต์