在一个项目中我的工作,我有3张图片:顶部,中部和底部。顶部和底部是固定高度,中间应在两者之间重复。 (窗口的大小会发生变化。)他们都从用户偏好的颜色着色,则需要使用从偏好的价值有自己的Alpha设置。重复半透明NSImage中
我可以做的几乎一切。我被卡住的部分正在画中间。我决定使用[NSColor +colorWithPaternImage:]
将是最容易使用的东西。有很多代码可以制作实际的图像和颜色,所以假设它们存在并且不是零。
int problem; // just to help explain things
float alpha;
NSImage *middleTinted;
NSRect drawRect = [self bounds];
drawRect.size.height = self.bounds.size.height - topTinted.size.height - bottomTinted.size.height;
drawRect.origin.y = topTinted.size.height;
NSColor* colorOne = [NSColor colorWithPatternImage:middleTinted];
NSColor* colorTwo = [colorOne colorWithAlphaComponent:alpha];
if(problem == 1)
{
[colorOne set];
}
else if(problem == 2)
{
[colorTwo set];
}
[NSBezierPath fillRect:drawRect];
假设problem == 1
,它绘制正确的图像,在正确的位置,并以正确的大小,但没有alpha。 (显然,因为我没有指定一个。)
当problem == 2
,我希望它做同样的事情,但具有正确的alpha值。取而代之的是,我得到一个黑匣子。
是否有将重复的图像与正确的阿尔法的解决方案?我想我可以在一个循环中手动绘制图像,但是如果存在的话我更喜欢更合理的解决方案。
第二种解决方案是我开始使用一个,但'NSDrawThreePartImage'伟大的工作,它显然比我更好的解决方案。谢谢! – 2011-04-13 00:14:49