Ios 基于quartz2d的图像处理
我想给出图像和绘制图像的矩形边框之间的间距,比如左侧5个,顶部5个,右侧5个,但底部约30个,因为这是用户将要写入的文本的空间,用户还可以选择他/她希望文本位于顶部,所以在这种情况下,顶部间距将为30,底部间距将为5。以下是它位于drawrect方法中uiview子类中的代码 使用此代码将边框和图像紧密绑定在一起,我无法给出边框和图像之间的间隙。知道我该怎么做吗 提前谢谢Ios 基于quartz2d的图像处理,ios,Ios,我想给出图像和绘制图像的矩形边框之间的间距,比如左侧5个,顶部5个,右侧5个,但底部约30个,因为这是用户将要写入的文本的空间,用户还可以选择他/她希望文本位于顶部,所以在这种情况下,顶部间距将为30,底部间距将为5。以下是它位于drawrect方法中uiview子类中的代码 使用此代码将边框和图像紧密绑定在一起,我无法给出边框和图像之间的间隙。知道我该怎么做吗 提前谢谢 首先,您有一个严重的bug。这一行是错误的: CGSize cgs = CGSizeMake(250.0, 300.0);
首先,您有一个严重的bug。这一行是错误的:
CGSize cgs = CGSizeMake(250.0, 300.0);
UIGraphicsBeginImageContext(cgs);
CGRect rectangle = CGRectMake(0,0,cgs.width,cgs.height);
UIImage *myImage = [UIImage imageNamed:@"BMW.jpg"];
[myImage drawInRect:rectangle];
[myImage release];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 5.0);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextStrokeRect(context, rectangle);
UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[testImg drawAtPoint:CGPointMake(35, 10)];
你没有自己的myImage
,所以你应该不要发布它。您需要阅读中的“内存管理规则”。或者,您应该启用ARC(自动引用计数),然后编译器将负责为您发布内容。由于自iOS 4.0开始支持ARC,如果您正在开发一个新的应用程序,您几乎肯定会使用它
关于图像绘制,您只需要修改正在绘制图像的矩形。例如,可以在顶部、左侧和右侧保留5像素边框,在底部保留30点边框,如下所示:
[myImage release];
如果您想在顶部添加30点边框,还需要修改
imageRect.origin.y
非常感谢您的重播并指出错误。。。我修改了代码和它的工作,但图像正在走出边界,并蔓延到左上右下的差距请检查我附加它的屏幕截图。我要的是边框内的间隙,而不是边框外的间隙。我说你应该修改用于绘制图像的矩形。我没有说你应该修改你用来画边框的矩形。为什么您认为我创建了一个名为imageRect
的新变量?我在drawInRect:
中使用了错误的变量。我已经修好了。
CGRect imageRect = CGRectInset(rectangle, 5, 5); // move 5 points in on all sides
imageRect.size.height -= 25; // make it another 25 points shorter
[myImage drawInRect:imageRect];