suixin812 发表于 2014-8-27 16:46:23

【3.2Beta】D2D图像蒙版

本帖最后由 suixin812 于 2014-8-27 17:40 编辑

简述

图像蒙版是8月21日Rainmeter 3.2.2308新推出的功能。

图像蒙版是根据蒙版图像对原始图像的形状进行限定的一种功能。
通常蒙版是以黑白两色确定原始图像的是否保留(如Photoshop中的图层蒙版),但Rainmeter中的图像蒙版是根据蒙版的透明度来对原始图像进行裁剪,这类似于Photoshop中的剪贴蒙版。


手册描述:

MaskImageName


指定一个图片文件作为(由MeasureName或ImageName指定的)主图像的蒙版。
蒙版的大小与形状将影响主图像的大小和形状。

MaskImageName可以是任何支持的图片文件的完整地址,或相对地址,或只是文件名并由MaskImagePath选项指定文件夹地址。

若MaskImageName定义,则W与H选项定义蒙版图像大小以及最终Meter的大小。主图像将随后通过“填充”的方案(保留纵横比缩放并裁剪多余部分)来“蒙上”蒙版图像——蒙版不透明区域保留,透明区域丢去。

若主图像或蒙版图像包含透明或半透明区域,则其alpha通道(透明度)将应用到最终图像。当两个图像包含完全透明或半透明的重叠区域,则将应用“最大透明度”值(the Most Transparent Value)。


注意:
o 蒙版功能只被有D2D渲染功能的系统支持。XP系统或者在Rainmeter设置中关闭了D2D渲染时无法使用这一功能。
o MaskImageName选项无法通过%1, %2引用MeasureNameN的返回值。
o 若设置了MaskImageName,则ScaleMargins和Tile选项将对Meter无法使用。



示例

主图像与蒙版图像
http://rainmeter.net/forum/download/file.php?id=8887http://rainmeter.net/forum/download/file.php?id=8889&t=1

应用蒙版后的结果
http://rainmeter.net/forum/download/file.php?id=8892

代码
Update=1000
DynamicWindowSize=1
AccurateText=1

;Abbey.jpg is 300 X 300
;Apple.png is 491 X 480


Meter=Image
W=250
ImagePath=#@#Images\
MaskImagePath=#@#Masks\
ImageName=Abbey.jpg
MaskImageName=Apple.png


Meter=String
Y=5R
FontSize=12
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=W: | H:
DynamicVariables=1




需要注意的地方:


//MaskImageName


蒙版功能只被启用D2D渲染功能的系统支持。也就是说XP的系统或者在Rainmeter设置中关闭了D2D渲染的情况下都无法使用这一功能。

尽管MaskImageName支持所有Rainmeter支持的图片格式,但只有使用有透明度的.png和.gif图片才有意义。因为要通过蒙版获取“形状”,那么蒙版本身的图像必须有透明或半透明的区域。




//尺寸


当定义了MaskImageName时,W和H决定了蒙版图像的尺寸,进而决定了Meter的尺寸。若同时定义W与H,则蒙版将拉伸以适应指定区域。若只制定了W或H,则蒙版将保留纵横比缩放以适应指定宽度或高度。若没有指定W或H,则蒙版图像将保留原始大小。

由ImageName亦或MeasureName指定的主图像将适应蒙版图像的大小。这种适应是保留纵横比并裁剪多余部分的缩放,换言之,与正常Image Meter的PreserveAspectRatio=2的效果一样。

上述结果是,当只指定W或H,代码将使蒙版图像自动的保留纵横比缩放,并同样使主图像保留纵横比缩放。Meter下的任何PreserveAspectRatio设置将被忽略。

尽管像PreserveAspectRatio=2一样在剪裁主图像以适应蒙版尺寸时无法控制裁剪的“起点”,但这一问题可以通过在蒙版图像上的四个边上增加一定范围的透明区域来实现。也就是说我们可以在主图像缩放剪裁以适应蒙版尺寸时,可以控制主图像哪一多余部分不被剪裁。当然,最终整个Meter的尺寸还是整个蒙版在W/H设置后的尺寸。


//变换


蒙版图像可以通过MaskImageRotate或MaskImageFlip来旋转或翻折。这与ImageRotate和ImageFlip类似,目前只有这两个选项可以对蒙版图像进行变换。

尽管如此我们必须指出,使用ImageRotate或MaskImageRotate很可能会有些问题。Meter的W和H是由未旋转的图像指定的,然后图像才在已经存在的“容器”内旋转。若旋转导致主图像不再与蒙版重合匹配,或蒙版不再与主图像匹配,则很容易就会产生意料外的裁剪和最终图像。

尽管很复杂,但TransformationMatrix(变换矩阵)大概是对最终图像旋转、斜切等操作更好的途径。TransformationMatrix会对整个Meter进行变换而非在原来Meter尺寸与形状内进行图像的变换。任何使用TransformationMatrix时都要注意Meter在变换后没有超出皮肤边界。

其他图像变换像ScaleMargins和Tile将对设置了MaskImageName的Meter不再有效。




//其他注意

蒙版功能无法用于任何只有SolidColor没有ImageName的Image类Meter。W、H、SolidColor实际上只是对Meter的容器进行上色,对图像本身没有影响。




//Brian补充

1. 选项只在D2D渲染下有效。XP与GDI+抱歉。
2. 某些图像选项像ScaleMargins和Tile不支持。
3. PreserveAspectRatio对MaskImageName无效,尽管ImageName会按照PreserveAspectRatio=2的方式来缩放。原因是让ImageName匹配蒙版的大小时有太多方案。



Rainmeter.net(2014) Rainmeter 3.2 Beta . Avaliable from: http://rainmeter.net/beta-3-2(Accessed: 27 August 2014)
Rainmeter.net(2014) Image Meter . Avaliable from: http://docs.rainmeter.net/manual-beta/meters/image#MaskImage(Accessed: 27 August 2014)
Rainmeter.net(2014) Image Masking . Avaliable from: http://rainmeter.net/forum/viewtopic.php?f=114&t=19124(Accessed: 27 August 2014)


jun761214 发表于 2024-7-9 10:44:40

谢谢楼主分享!

卜念 发表于 2016-4-20 20:45:35

学习了,不错

瀚海 发表于 2016-3-22 22:10:21

顶啊{:10_402:}

拾词 发表于 2016-3-18 10:37:22

{:10_403:}{:10_403:}

水车前 发表于 2016-2-22 04:32:09


楼主真素活雷锋,

DAVIDs 发表于 2015-12-14 11:03:12

楼主真素活雷锋,

minineo 发表于 2015-7-29 12:18:24

感恩,教程不错

AVegetarianMing 发表于 2015-7-27 17:01:05

顶一下~~~~~~

消えた墨痕 发表于 2015-6-7 16:41:18

楼主辛苦了{:10_402:}顶啊

文要加点 发表于 2015-6-6 11:59:32

为什么收藏那么小,害我找半天
页: [1] 2 3
查看完整版本: 【3.2Beta】D2D图像蒙版