Dir*_*lik 4 iphone core-graphics ios ios5
在绘制到屏幕外缓冲区时,我正在努力让Image Insets工作.
在UIImage上直接使用resizableImageWithCapInsets:setImage:into按钮对我来说很好用:
UIImage * base = [UIImage imageNamed:@"button.png"];
UIImage * img = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
[self setImage:img forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
如下所示(左边是原始缩放,右边是使用insets缩放):

所以正确的一个很好 - 顶部/底部/左/右的线是等距的.到现在为止还挺好.
现在,如果我尝试使用绘制的图像进行相同的操作,然后将其捕获到屏幕外缓冲区,其中:
UIImage * base = [UIImage imageNamed:@"button.png"];
base = [base resizableImageWithCapInsets:UIEdgeInsetsMake(20,20,20,20)];
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
ctx = UIGraphicsGetCurrentContext();
CGContextDrawImage(ctx, CGRectMake(0,0,self.bounds.size.width,
self.bounds.size.height), [base CGImage]);
img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self setImage:img forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
我得到了下面(再次左边是原始缩放,右边是插图):

.
所以这里似乎忽略了插图.
有人对这里出了什么问题有任何建议吗?在全功能例如http://people.apache.org/~dirkx/insetSample.zip,只是在关键代码http://pastebin.com/rm8h6YFV.
任何和所有建议表示赞赏.
DW
Rob*_*ill 13
我猜可伸缩的UIImages处理的级别比Quartz2D高,所以使用CGContextDrawImage不起作用.
您可以尝试使用-[UIImage drawInRect].这将绘制到当前的UIGraphics上下文,这是您在代码片段中创建的位图上下文.
相关的是:
[base drawInRect:CGRectMake(0,0,self.bounds.size.width,
self.bounds.size.height)];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |