原著:Robert Wingate
翻译:alphachi
二、输入Imaging Lingo
这个程序只需要使用一点Imaging Lingo的知识,因为copyPixels一个函数几乎就可以完成所有的工作。这个函数将一个图像中指定区域的像素复制到另一个图像的指定区域,其中的“区域”既可以是一个rect,也可以是一个quad,此外还可以给复制的像素使用颜色、油墨、混色、抖动和遮罩。copyPixels的语法如下:
destinationImage.copyPixels (sourceImage, destinationRect, sourceRect {paramList})
让我们来看看UpdateDialogImage是如何使用copyPixels创建空白面板图像的:
on UpdateDialogImage ()
w = member ("BlankSlate").width
h = member ("BlankSlate").height
r = member ("BlankSlate").rect
-- 1. 在内存中创建一个图像,然后将空白面板演员的图像复制进去
newImage = image (w, h, 16)
newImage.copyPixels (member("BlankSlate").image, r, r)
接着,UpdateDialogImage根据目前单选按钮的状态进行上色:
-- 2. 使用单选按钮指定的的颜色填充newImage
rFillArea = r
if (lsWidgetStates.color = "White Background") then
newImage.fill (rFillArea, rgb( 255,255,255)) -- white
else
newImage.fill (rFillArea, rgb( 180,220,240 )) -- light blue
end if
如果复选框被选中,则添加相应的图形:
-- 3. 根据复选框的当前状态添加相应的元素
if lsWidgetStates.publisher then -- Publisher
CompositeElement( newImage, member ("publisher"), 9, 6 )
end if
if lsWidgetStates.title then -- Title
CompositeElement( newImage, member ("bookTitle"), 9, 50 )