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,80, 80)];
、、、、、、、、、、、、、、、、、、、、、、、、、、、下面是官方代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#pragma mark -
@implementation QuartzTextView
#define kTextString "Hello From Quartz"
#define kTextStringLength strlen(kTextString)
-(void)drawInContext:(CGContextRef)context
{
CGContextSetRGBFillColor(context,1.0, 1.0,1.0, 1.0);
CGContextSetRGBStrokeColor(context,1.0, 0.0,0.0, 1.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.0, 30.0,kTextString, kTextStringLength);
CGContextSetTextDrawingMode(context,kCGTextStroke);
CGContextShowTextAtPoint(context,10.0, 70.0,kTextString, kTextStringLength);
CGContextSetTextDrawingMode(context,kCGTextFillStroke);
CGContextShowTextAtPoint(context,10.0, 110.0,kTextString, kTextStringLength);
// 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.0, 150.0 + 12 * y, glyphs,32);
}
CGFontRelease(helvetica);
}
@end
-(void)drawInContext:(CGContextRef)context
{
CGRect imageRect;
imageRect.origin = CGPointMake(8.0, 8.0);
imageRect.size = CGSizeMake(64.0, 64.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.0, 80.0, self.bounds.size.width, self.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.0, 112.0);
CGContextDrawTiledImage(context, imageRect, self.image);
// Highlight the "first" image from the DrawTiledImage call.
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 0.5);
CGContextFillRect(context, imageRect);
// And stroke the clipped area
CGContextSetLineWidth(context, 3.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextStrokeRect(context, CGContextGetClipBoundingBox(context));
}
相关推荐
在iOS平台上进行图像和动画处理是开发过程中的一大亮点,给用户提供了更加丰富和吸引人的交互体验。在这篇文章中,我们会针对iOS系统上的图像和动画处理进行详细的讨论,特别强调了Quartz 2D和Core Animation这两种...
在画板应用中,通常会使用CGContext对象来处理图形上下文,通过它我们可以绘制线条、形状、文本以及图像。例如,你可以使用`CGContextMoveToPoint`、`CGContextAddLineToPoint`等函数定义路径,然后用`...
Quartz 2D的核心是CGContext,一个表示绘图上下文的对象,我们可以在这个上下文中进行画线、填充形状、添加文本和图像等各种操作。以下是一些关键的Quartz 2D知识点: 1. CGContext的创建与配置:在视图的`drawRect...
Core Graphics,也被称为Quartz 2D,是一个低级别的2D绘图框架,提供了绘制直线、曲线、文本和图像的能力。开发者可以使用CGContext API进行精确的像素级控制,创建自定义视图和复杂的图形设计。UIKit则提供了一套更...
iOS系统提供了Core Graphics框架(通常称为Quartz 2D),这是一个强大的2D图形绘制系统,可用于创建高质量的图形和图像。它支持基本的几何形状绘制、路径操作、渐变、阴影等效果,非常适合用来创建仪表盘这样的复杂...
iOS核心动画高级技巧是一本深入探讨iOS平台下核心动画技术的专著。核心动画是iOS中用于制作流畅动画效果的一套API,能够在不牺牲性能的前提下,提供复杂的动画和视觉效果。本书着重讲解了如何利用核心动画框架,进行...
核心动画不是单一的工具或功能,而是一整套API集合,包括但不限于图层和视图的管理、动画控制、图像处理、性能优化等多个方面。 ### 核心动画的组成 1. **图层的树状结构**:在核心动画中,所有可视元素都以图层...
CoreGraphics提供低级绘图接口,可以用于绘制更复杂的图形和文本。而CoreImage则是一个强大的图像处理框架,可以应用各种图像滤镜,例如模糊、色彩调整等。 在实际项目中,开发者还需要考虑性能优化,比如避免不必...
在iOS开发中,有时我们需要创建类似Excel的可定制表格视图,这通常涉及到自定义UI组件和使用Core Graphics(简称CG)进行低级绘图。本教程将介绍如何利用CGContextRef来实现这一功能,特别是在iOS应用中创建自定义...
QuartzCore框架是苹果iOS和macOS开发中的一个重要组成部分,主要负责图形渲染和动画效果的实现。本笔记将深入探讨QuartzCore框架的核心概念、关键类以及如何在实际项目中应用这些技术。 QuartzCore框架提供了低级别...
可以使用`CGContextShowTextAtPoint`来绘制文本,注意调整字体、颜色和位置。 7. **自定义功能**:还可以根据需求添加其他功能,如滚动、缩放、平移等,以增强交互性。也可以通过添加手势识别器来响应用户的触摸...
iOS动画高级讲解一书详细介绍了iOS中动画的各种高级特性,帮助开发者深入理解和掌握如何使用这些特性来创建出流畅、引人入胜的动画效果。 首先,书中提到了图层树的概念。图层树是iOS应用中视图层级的基础,它是...
《DrawDemo:深入解析iOS绘图源码》 在iOS开发中,绘制是不可或缺的一部分,无论是自定义视图、动画效果还是复杂的用户界面设计,都离不开底层的绘图技术。本篇文章将深入探讨名为"DrawDemo"的iOS项目,解析其源码...
在iOS开发中,图像处理和绘图是必不可少的一部分。标题"testImage 绘图源码_ios源码"指向一个可能包含iOS应用中的图像处理或绘图功能的源代码项目。这个项目的名字是"testImage",并且描述是"(1)",这可能是表示这是...
Core Animation是iOS应用开发中不可或缺的一部分,它不仅仅局限于动画效果的实现,更是整个用户界面布局和视觉表现的核心。通过对`CALayer`的深入理解和灵活运用,开发者可以创造出既美观又高效的动画效果。无论是...