【发布时间】:2011-04-12 16:39:02
【问题描述】:
在我正在进行的一个项目中,我有 3 张图片:顶部、中间和底部。顶部和底部是固定的高度,中间应该在两者之间重复。 (窗口大小会发生变化。)它们都被用户偏好的颜色着色,然后需要使用偏好中的值设置它们的 alpha。
我几乎可以做任何事情。我被困在的部分是画中间。我决定使用[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 值。而不是这个,我得到一个黑匣子。
是否有一种解决方案可以使用正确的 alpha 重复图像?我想我可以在循环中手动绘制图像,但如果存在,我更喜欢更合理的解决方案。
【问题讨论】:
标签: objective-c quartz-graphics drawrect