IOS图像处理(2)绘制文本

IOS中可以通过CGContextShowTextAtPoint来绘制文字,但这个方法不支持中文字符,而且在ios7之后也不推荐使用

我们可以通过NSString的drawAtPoint以及drawInRect实现更加简单的文字绘制

- (void)drawRect:(CGRect)rect
{
    //获取图像上下文对象
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBStrokeColor(context, 250/255.0, 250/255.0, 250/255.0, 1);
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
    CGContextSetShadowWithColor(context, CGSizeMake(1, 1), 3, [UIColor yellowColor].CGColor);

    //使用填充模式绘制文字
    CGContextSetTextDrawingMode(context,kCGTextFill);
    NSString *str = @"this is a jock";
    [str drawAtPoint:CGPointMake(20, 20) withAttributes:@{NSFontAttributeName:[
                                                              UIFont fontWithName:@"Arial" size:30],NSForegroundColorAttributeName:[UIColor greenColor]}];

    //使用描边模式绘制文字
    CGContextSetTextDrawingMode(context, kCGTextStroke);
    [str drawAtPoint:CGPointMake(20, 70) withAttributes:@{NSFontAttributeName:[
                                                                               UIFont fontWithName:@"Arial" size:30],NSForegroundColorAttributeName:[UIColor magentaColor]}];

    CGContextSetTextDrawingMode(context, kCGTextFillStroke);
    [str drawInRect:CGRectMake(20, 120, 100, 100) withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:30],NSForegroundColorAttributeName:[UIColor redColor]}];

}

运行结果

时间: 2024-10-26 21:09:30

IOS图像处理(2)绘制文本的相关文章

iOS图像处理之绘制直线

-(void)drawLine:(CGPoint)fromPnt toPoint:(CGPoint)toPnt{ float xScale = theImageView.image.size.width/theImageView.frame.size.width; float yScale = theImageView.image.size.height/theImageView.frame.size.height; UIGraphicsBeginImageContext(theImageVie

详解OS X和iOS图像处理框架Core Image

转自:http://www.csdn.net/article/2015-02-13/2823961-core-image 摘要:本 文结合实例详解了OS X和iOS图像处理框架Core Image的使用,如何通过Core Image来创建和使用iOS的内置滤镜,非常适合初学者学习.虽然示例代码是用Swift写的iOS程序,不过实现概念很容易转换到 Objective-C和OS X. 这篇文章会为初学者介绍一下Core Image,一个OS X和iOS的图像处理框架. 如果你想跟着本文中的代码学习

ios 画图,绘制坐标系,画坐标系

先来看个效果: 新建视图类,在直接添加代码: // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // 获取当前环境 CGContextRef context = UIGraphicsGetCurrentContext()

绘制文本

本课中,我们将学习如何在窗口的客户区“绘制”字符串.我们还将学习关于“设备环境”的概念. 理论: Windows 中的文本是一个GUI(图形用户界面)对象.每一个字符实际上是由许多的像素点组成,这些点在有笔画的地方显示出来,这样就会出现字符.这也是为什么我说“绘制”字符,而不是写字符.通常您都是在您应用程序的客户区“绘制”字符串(尽管您也可以在客户区外“绘制”).Windows 下的“绘制”字符串方法和 Dos 下的截然不同,在 Dos 下,您可以把屏幕想象成 85 x 25 的一个平面,而 W

iOS 图像处理-剪裁图像

解决问题:按照某一长宽比例,剪裁图片的上部和下部,保留中间的内容.当然也可以自定义需要剪裁留下的区域 前提:需要添加Framework:CoreGraphics.framework 代码: - (UIImage*) crop:(UIImage*)theImage{ // Get size of current image CGSize size = [theImage size]; // Create rectangle that represents a cropped image CGFlo

iOS 图像处理 - 图像拼接

解决问题:将两个图像拼接在一起 前提:需要添加Framework:CoreGraphics.framework 源码: - (UIImage *) combine:(UIImage*)leftImage :(UIImage*)rightImage { CGFloat width = leftImage.size.width * 2; CGFloat height = leftImage.size.height; CGSize offScreenSize = CGSizeMake(width, h

iOS 图像处理 - 模糊图像

解决问题:将图像模糊 前提:添加 CoreGraphics.framework 源码: - (UIImage*) blur:(UIImage*)theImage { // create our blurred image CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage]; // setting up G

使用GDI绘制文本

/// <summary>        /// 定义一个绘制文本        /// </summary>        public void Texts()        {            Graphics g = this.CreateGraphics();            g.DrawString("嘿嘿,O(∩_∩)O哈哈~",new Font("楷体",20),Brushes.Black,new Point(20

Qt之图形(绘制文本)

简述 前面我们讲解了Qt图形的基本绘制,其中包括: 绘制文本.直线.直线.矩形.弧线.椭圆.多边形.图片,以及其它一些高级用法,比如:渐变.转换等. 本节我们来详细讲解文字的绘制.主要通过QPainter的darwText()函数来实现,里面包含多个重载函数,其中,可以通过QRect来指定绘制的区域,也可以通过QPoint来指定绘制的起始点. QFont类可以辅助设置文本的大小.粗细.字符间距等,然后使用setFont()来设置. QFontInfo类用来获取字体的信息,可以通过fontInfo

iOS界面的绘制和渲染

界面的绘制和渲染 UIView是如何到显示的屏幕上的. 这件事要从RunLoop开始,RunLoop是一个60fps的回调,也就是说每16.7ms绘制一次屏幕,也就是我们需要在这个时间内完成view的缓冲区创建,view内容的绘制这些是CPU的工作:然后把缓冲区交给GPU渲染,这里包括了多个View的拼接(Compositing),纹理的渲染(Texture)等等,最后Display到屏幕上.但是如果你在16.7ms内做的事情太多,导致CPU,GPU无法在指定时间内完成指定的工作,那么就会出现卡