`
dcj3sjt126com
  • 浏览: 1881137 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ios 学习之你画我话绘图一 绘制文本和图像

    博客分类:
  • IOS
 
阅读更多

ios sdk 给我们提供了丰富的字体,我们通过枚举可以打印出字体的名字。

-(void)enumerateFont

{

    for (NSString *familyNamein [UIFontfamilyNames])

    {

        NSLog(@"font family = %@",familyName );

        for (NSString *fontNamein [UIFontfontNamesForFamilyName:familyName]) {

        NSLog(@"\t  %@",fontName );

      }

      

}

 

下面我们绘制一个褐色的hello文本!在view上

- (void)drawRect:(CGRect)rect

{

    [super drawRect:rect];

    

    NSString *attrString =@"hello";

    

    UIColor *stringColor = [UIColorcolorWithRed:0.5fgreen:0.0fblue:0.5falpha:1.0];  //设置文本的颜色

    

    NSDictionary* attrs =@{NSForegroundColorAttributeName:stringColor,

                           NSFontAttributeName:[UIFontfontWithName:@"AmericanTypewriter"size:18],

                            }; //在词典中加入文本的颜色 字体 大小

    

   // [attrString drawAtPoint:CGPointMake(100, 100) withAttributes:attrs ];  //根据坐标点画在view上

      [attrString drawInRect:CGRectMake(150,120,100,200)withAttributes:attrs]; //给文本限制个矩形边界,防止矩形拉伸;

 

}

 

 

绘制图像和文本用的一个函数

 

 

    UIImage *image = [UIImageimageNamed:@"see.jpg"];

    //[image drawAtPoint:CGPointMake(20, 100)];

    [image drawInRect:CGRectMake(40,60,8080)];

 

 

 

、、、、、、、、、、、、、、、、、、、、、、、、、、、下面是官方代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#pragma mark -

 

@implementation QuartzTextView

 

#define kTextString "Hello From Quartz"

#define kTextStringLength strlen(kTextString)

 

-(void)drawInContext:(CGContextRef)context

{

CGContextSetRGBFillColor(context,1.01.0,1.01.0);

CGContextSetRGBStrokeColor(context,1.00.0,0.01.0);

 

// Some initial setup for our text drawing needs.

// First, we will be doing our drawing in Helvetica-36pt with the MacRoman encoding.

// This is an 8-bit encoding that can reference standard ASCII characters

// and many common characters used in the Americas and Western Europe.

CGContextSelectFont(context,"Helvetica"36.0,kCGEncodingMacRoman);

// Next we set the text matrix to flip our text upside down. We do this because the context itself

// is flipped upside down relative to the expected orientation for drawing text (much like the case for drawing Images & PDF).

CGContextSetTextMatrix(context,CGAffineTransformMakeScale(1.0, -1.0));

// And now we actually draw some text. This screen will demonstrate the typical drawing modes used.

CGContextSetTextDrawingMode(context,kCGTextFill);

CGContextShowTextAtPoint(context,10.030.0,kTextStringkTextStringLength);

CGContextSetTextDrawingMode(context,kCGTextStroke);

CGContextShowTextAtPoint(context,10.070.0,kTextStringkTextStringLength);

CGContextSetTextDrawingMode(context,kCGTextFillStroke);

CGContextShowTextAtPoint(context,10.0110.0,kTextStringkTextStringLength);

 

// Now lets try the more complex Glyph functions. These functions allow you to draw any glyph available in a font,

// but provide no assistance with converting characters to glyphs or layout, and as such require considerably more knowledge

// of text to use correctly. Specifically, you need to understand Unicode encoding and how to interpret the information

// present in the font itself, such as the cmap table.

// To get you started, we are going to do the minimum necessary to draw a glyphs into the current context.

CGFontRef helvetica = CGFontCreateWithFontName((CFStringRef)@"Helvetica");

CGContextSetFont(context, helvetica);

CGContextSetFontSize(context,12.0);

CGContextSetTextDrawingMode(context,kCGTextFill);

// Next we'll display lots of glyphs from the font. 

CGGlyph start = 0;

for(int y =0; y < 20; ++y)

{

CGGlyph glyphs[32];

for(int i =0; i < 32; ++i)

{

glyphs[i] = start + i;

}

start += 32;

CGContextShowGlyphsAtPoint(context,10.0150.0 + 12 * y, glyphs,32);

}

CGFontRelease(helvetica);

}

 

@end

 

 

 

 

-(void)drawInContext:(CGContextRef)context

{

CGRect imageRect;

imageRect.origin = CGPointMake(8.08.0);

imageRect.size = CGSizeMake(64.064.0);

 

// Note: The images are actually drawn upside down because Quartz image drawing expects

// the coordinate system to have the origin in the lower-left corner, but a UIView

// puts the origin in the upper-left corner. For the sake of brevity (and because

// it likely would go unnoticed for the image used) this is not addressed here.

// For the demonstration of PDF drawing however, it is addressed, as it would definately

// be noticed, and one method of addressing it is shown there.

 

// Draw the image in the upper left corner (0,0) with size 64x64

CGContextDrawImage(context, imageRect, self.image);

 

// Tile the same image across the bottom of the view

// CGContextDrawTiledImage() will fill the entire clipping area with the image, so to avoid

// filling the entire view, we'll clip the view to the rect below. This rect extends

// past the region of the view, but since the view's rectangle has already been applied as a clip

// to our drawing area, it will be intersected with this rect to form the final clipping area

CGContextClipToRect(context, CGRectMake(0.080.0self.bounds.size.widthself.bounds.size.height));

 

// The origin of the image rect works similarly to the phase parameter for SetLineDash and

// SetPatternPhase and specifies where in the coordinate system the "first" image is drawn.

// The size (previously set to 64x64) specifies the size the image is scaled to before being tiled.

imageRect.origin = CGPointMake(32.0112.0);

CGContextDrawTiledImage(context, imageRect, self.image);

 

// Highlight the "first" image from the DrawTiledImage call.

CGContextSetRGBFillColor(context, 1.00.00.00.5);

CGContextFillRect(context, imageRect);

// And stroke the clipped area

CGContextSetLineWidth(context, 3.0);

CGContextSetRGBStrokeColor(context, 1.00.00.01.0);

CGContextStrokeRect(context, CGContextGetClipBoundingBox(context));

}

 

分享到:
评论

相关推荐

    iOS的图像和动画处理

    在iOS平台上进行图像和动画处理是开发过程中的一大亮点,给用户提供了更加丰富和吸引人的交互体验。在这篇文章中,我们会针对iOS系统上的图像和动画处理进行详细的讨论,特别强调了Quartz 2D和Core Animation这两种...

    ios画板源码ios画板源码

    在画板应用中,通常会使用CGContext对象来处理图形上下文,通过它我们可以绘制线条、形状、文本以及图像。例如,你可以使用`CGContextMoveToPoint`、`CGContextAddLineToPoint`等函数定义路径,然后用`...

    ios上的图片处理与动画代码

    Quartz 2D的核心是CGContext,一个表示绘图上下文的对象,我们可以在这个上下文中进行画线、填充形状、添加文本和图像等各种操作。以下是一些关键的Quartz 2D知识点: 1. CGContext的创建与配置:在视图的`drawRect...

    Ios上的图形和动画处理

    Core Graphics,也被称为Quartz 2D,是一个低级别的2D绘图框架,提供了绘制直线、曲线、文本和图像的能力。开发者可以使用CGContext API进行精确的像素级控制,创建自定义视图和复杂的图形设计。UIKit则提供了一套更...

    ios-绘制仪表盘.zip

    iOS系统提供了Core Graphics框架(通常称为Quartz 2D),这是一个强大的2D图形绘制系统,可用于创建高质量的图形和图像。它支持基本的几何形状绘制、路径操作、渐变、阴影等效果,非常适合用来创建仪表盘这样的复杂...

    iOS核心动画高级技巧(iOS Core Animation: Advanced Techniques)

    iOS核心动画高级技巧是一本深入探讨iOS平台下核心动画技术的专著。核心动画是iOS中用于制作流畅动画效果的一套API,能够在不牺牲性能的前提下,提供复杂的动画和视觉效果。本书着重讲解了如何利用核心动画框架,进行...

    ios 核心动画

    核心动画不是单一的工具或功能,而是一整套API集合,包括但不限于图层和视图的管理、动画控制、图像处理、性能优化等多个方面。 ### 核心动画的组成 1. **图层的树状结构**:在核心动画中,所有可视元素都以图层...

    IOS应用源码之相机+画板 .rar

    CoreGraphics提供低级绘图接口,可以用于绘制更复杂的图形和文本。而CoreImage则是一个强大的图像处理框架,可以应用各种图像滤镜,例如模糊、色彩调整等。 在实际项目中,开发者还需要考虑性能优化,比如避免不必...

    ios-画类似Excel表.zip

    在iOS开发中,有时我们需要创建类似Excel的可定制表格视图,这通常涉及到自定义UI组件和使用Core Graphics(简称CG)进行低级绘图。本教程将介绍如何利用CGContextRef来实现这一功能,特别是在iOS应用中创建自定义...

    iOS学习笔记之QuartzCore框架.rar

    QuartzCore框架是苹果iOS和macOS开发中的一个重要组成部分,主要负责图形渲染和动画效果的实现。本笔记将深入探讨QuartzCore框架的核心概念、关键类以及如何在实际项目中应用这些技术。 QuartzCore框架提供了低级别...

    iOS 绘制折线图小demo

    可以使用`CGContextShowTextAtPoint`来绘制文本,注意调整字体、颜色和位置。 7. **自定义功能**:还可以根据需求添加其他功能,如滚动、缩放、平移等,以增强交互性。也可以通过添加手势识别器来响应用户的触摸...

    iOS动画高级讲解

    iOS动画高级讲解一书详细介绍了iOS中动画的各种高级特性,帮助开发者深入理解和掌握如何使用这些特性来创建出流畅、引人入胜的动画效果。 首先,书中提到了图层树的概念。图层树是iOS应用中视图层级的基础,它是...

    Draw绘图源码_ios源码

    《DrawDemo:深入解析iOS绘图源码》 在iOS开发中,绘制是不可或缺的一部分,无论是自定义视图、动画效果还是复杂的用户界面设计,都离不开底层的绘图技术。本篇文章将深入探讨名为"DrawDemo"的iOS项目,解析其源码...

    testImage 绘图源码_ios源码

    在iOS开发中,图像处理和绘图是必不可少的一部分。标题"testImage 绘图源码_ios源码"指向一个可能包含iOS应用中的图像处理或绘图功能的源代码项目。这个项目的名字是"testImage",并且描述是"(1)",这可能是表示这是...

    iOS动画高级技巧

    Core Animation是iOS应用开发中不可或缺的一部分,它不仅仅局限于动画效果的实现,更是整个用户界面布局和视觉表现的核心。通过对`CALayer`的深入理解和灵活运用,开发者可以创造出既美观又高效的动画效果。无论是...

Global site tag (gtag.js) - Google Analytics