`
jiapumin
  • 浏览: 341261 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在屏幕上绘制文字和图片

 
阅读更多

一.基本知识

在程序中我们可能有需要在iPhone屏幕上绘制线段、图形等,比如类似地图应用程序,我们主要就需要绘制很多的道路线段。常用的线段、图形等的绘制我们可以使用Quartz2D库提供的绘制线段和各种图形API来完成。这里我们主要介绍一下如何在屏幕上绘制文字和图片,方法分别有两种,文字可以使用NSString(UIStringDrawing)的方式实现,图片可以用UIImage(DrawingImages)的方式实现;同时文字和图片的绘制也可以用Quartz2D提供的API实现。

二.具体介绍

1.文字的绘制

(1)方法1

在UIStringDrawing.h头文件中提供了在屏幕上绘制文字的函数,根据不同的参数有不同函数形式,具体可以参考NSString UIKit Additions Reference。这里主要介绍两个函数形式。

- (CGSize)drawAtPoint:(CGPoint)point withFont:(UIFont *)font

在屏幕上特定的位置以指定的字体绘制单行的文本。(附:iPhone坐标系的原点为屏幕左上角,向右为x坐标轴正方向,向下为y坐标轴正方向)

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font

这个函数是在屏幕上指定的区域内绘制单行的文本。


代码例子:

-(void) drawTextByString:(NSString *)drawText thePoisition:(CGPoint)point

{


//方式一


[drawText drawAtPoint:point withFont:[UIFont systemFontOfSize:FontSize]];

}

(2)方法2

Quartz2D提供的文字绘制方法复杂一些,需要并可以设置更多的参数,同时也可以对绘制的文字有更多的控制,比如对文字进行一定角度的旋转等。

void CGContextSelectFont (

   CGContextRef c,

   const char *name,

   CGFloat size,

   CGTextEncoding textEncoding

);

选择绘制的字体,第一个参数c为绘制的图形上下文,可以通过CGContextRef context = UIGraphicsGetCurrentContext();方式获得,第二个参数name为字体的名字,第三个参数size为字体的大小,第四个参数 textEncoding为字体的编码。

void CGContextSetTextDrawingMode (

   CGContextRef c,

   CGTextDrawingMode mode

);

设置文字的绘制方式,第二个参数代表绘制的模式,可以为kCGTextFill(填充),kCGTextStroke(描边)或kCGTextFillStroke(即填充又描边)。

void CGContextSetTextMatrix (

   CGContextRef c,

   CGAffineTransform t

);

设置文字变换矩阵,可以在这里给出文字平移,缩放或者旋转变换的矩阵,使文字进行相应的变换。

void CGContextShowTextAtPoint (

   CGContextRef c,

   CGFloat x,

   CGFloat y,

   const char *string,

   size_t length

);

在给定的位置处绘制文字。前面都是对文字的绘制进行参数设置,设置好后就可以调用这个函数进行绘制。参数依次为绘制的图形上下文,位置的x和y坐标,需要绘制的文字和其长度。(注意:这里的类型是C的 const char *,而不是Objective-C的NSString类型)


代码例子:

-(void) drawTextByQuartz:(CGContextRef)context theText:(const char*)drawtext




thePoisition:(CGPoint)point rotateAngle:(float)angle

{


//方式二


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


CGContextSetTextDrawingMode(context, kCGTextFill);


//可以有更多的控制方式,比如旋转字体


CGAffineTransform myTextTransform =  CGAffineTransformMakeRotation(radians (angle));


CGContextSetTextMatrix (context, myTextTransform);


CGContextShowTextAtPoint(context, point.x, point.y, drawtext, strlen(drawtext));

}

2.图片的绘制

(1)方法1

UIImage中提供了在屏幕上绘制图片的函数,主要有两种形式。

- (void)drawAtPoint:(CGPoint)point

在指定的位置绘制图片。

- (void)drawInRect:(CGRect)rect

在指定的区域绘制图片,并根据区域的大小对图片进行缩放。


代码例子:

-(void) drawPicByImage:(UIImage *)theImage theLocation:(CGPoint)point

{


//方式一


[theImage drawAtPoint:point];

}

-(void) drawPicByImage:(UIImage *)theImage theRect:(CGRect)rect

{


//方式一


[theImage drawInRect:rect];

}

(2)方法2

Quartz2D提供和图片绘制函数和UIImage的类似。

void CGContextDrawImage (

   CGContextRef c,

   CGRect rect,

   CGImageRef image

);

在指定的区域里绘制一幅图片。

代码例子:

-(void) drawPicByQuartz:(CGContextRef)context thePic:(UIImage *)theImage theLocation:(CGRect)rect

{


//方式二


CGContextDrawImage(context, rect, theImage.CGImage);

}

分享到:
评论

相关推荐

    屏幕画板 屏幕画图写字易语言源码

    将电脑屏幕或一张图片当成画板的小工具,也可以截图和保存。功能说明:。1:可抓取屏幕或打开一个图片,F9抓取屏幕;。2:按住Shift键可画正方形,画线时可捕捉45度角和90度;。3:按住Ctrl键可从中心位置开始画;。...

    易语言-屏幕画板 屏幕画图写字易语言

    将电脑屏幕或一张图片当成画板的小工具,也可以截图和保存功能说明:1:可抓取屏幕或打开一个图片,F9抓取屏幕;2:按住Shift键可画正方形,画线时可捕捉45度角和90度;3:按住Ctrl键可从中心位置开始画;4:按住...

    图片文字提取软件 图片内容转变文字 ORC软件

    2)启动紫光OCR,打开已裁减的图片,用鼠标在图片中绘制出待识别的文字区域,按下工具栏“识别”按钮即可。文字识别结束后,会自动在一个文本编辑器中打开已提取文字,将结果复制粘贴至其他文档中即可。 2、尚书六...

    C#图像操作源码_listview数据添加去闪烁_给图片加日期_绘制噪点_取色器_图片缩略图__石英时钟_图片转换格式

    listview数据添加去闪烁 PictureBox显示图片 播放功能_flv 操作XML 打开Url ...图片上绘制文字 图片缩略图 图片透明 图片转换格式 图片自动播放 压缩图片 颜色拾取器 中文验证码 抓取桌面 抓取左上角图片

    e语言-屏幕画板 屏幕画图写字易语言

    将电脑屏幕或一张图片当成画板的小工具,也可以截图和保存功能说明:1:可抓取屏幕或打开一个图片,F9抓取屏幕;2:按住Shift键可画正方形,画线时可捕捉45度角和90度;3:按住Ctrl键可从中心位置开始画;4:按住...

    在线屏幕截图控件 v1.4

    在图形截取后自带有工具条实现对图片的在线标注功能,可以在截取的图形上绘制矩形、椭圆、箭头及输入文字,并可在线或离线保存截取的图片。 控件使用简单、兼容性强,适合在OA系统、信息管理和发布系统、网站后台、...

    优道在线屏幕截图控件

    在图形截取后自带有工具条实现对图片的在线标注功能,可以在截取的图形上绘制矩形、椭圆、箭头及输入文字,并可在线或离线保存截取的图片。 控件使用简单、兼容性强,适合在OA系统、信息管理和发布系统、网站后台、...

    C CHARP图像操作源码三十例

    绘制噪点 绘制文字 绘制直线 绘制选中 绘制鼠标Cur 给图片加日期 缩略图 获取当前时间 获取照片时间 获取鼠标坐标 ...图片上绘制文字 图片合成 图片缩略图 图片自动播放 图片转换格式 图片透明 屏幕抓图

    C#,精巧实用的代码,单张图片生成裸眼3D立体图像的源代码

    比如要绘制的3d文字,即在原始位置显示高亮度颜色,而在左下或右上等位置用低亮度颜色勾勒出其轮廓,这样在视觉上便会产生3d文字的效果。具体实现时,可用完全一样的字体在不同的位置分别绘制两个不同颜色的2d文字,...

    Android绘图板源代码

    Android2.2以上,只在480*848的屏幕上测试过,其他屏幕的不保证。实现的功能包括: 绘制效果 1.水彩笔:50种颜色选择 2.蜡笔:68种颜色选择 3.颜料笔:52种颜色选择 绘制图形 1.可绘制11种图形(实心或空心) 2.提供...

    UdCapture_Sample.zip

    在图形截取后自带有工具条实现对图片的在线标注功能,可以在截取的图形上绘制矩形、椭圆、箭头及输入文字,并可在线或离线保存截取的图片。 控件使用简单、兼容性强,适合在OA系统、信息管理和发布系统、网站后台、...

    Visual C++程序开发范例宝典 - 第3章

    实例136 如何在图片上平滑移动文字 实例137 图像水印效果 3.8 图像管理 实例138 管理计算机内图片文件的程序 实例139 提取并保存应用程序图标 3.9 图片动画 实例140 利用图片制作屏幕保护程序 实例141 图片动画 实例...

    VC程序开发实例程序之图形技术(3)

    实例108 如何在图片上平滑移动文字 194 3.9 图像管理 196 实例109 管理计算机内图片文件的程序 196 实例110 提取并保存应用程序图标 199 3.10 图片动画 203 实例111 利用图片制作屏幕保护程序 203 实例...

    FSCapture神器截图工具绘制工具批图工具录屏工具

    除了屏幕截图之支持屏幕录制,上手简单难度低,新增支持高分辨率DPI适配功能,能够很方便的截图到很重的图片,完美支持BMP、JPEG、JPEG 2000、GIF、PNG、PCX、TIFF、WMF、ICO和TGA在内的所有主流图片格式,你指的...

    Android代码-最最轻量级的新手引导库(只有7个类)

    首先它需要一个目标View或者它的id,我们通过findViewById来得到这个View,计算它在屏幕上的区域targetRect,通过这个区域,开始绘制一个覆盖整个Activity的遮罩,可以定义遮罩的颜色和透明度,然而目标View被绘制成...

    屏幕截图及录屏软件for x64位windows7、windows10

    屏幕截图及录屏软件不但可以扫描器获取图像,和将图像转换为 PDF文档等功能,还可以绘制花式线条和箭头、形状、符号、文字、标注、荧光等;图片编辑、特效等类似PS简单设计;另外还可以转到画图,还可以屏幕放大镜、...

    android开发实例大全_王东华

    实例009: 在屏幕中显示文字 13 实例010: 在屏幕中显示编辑框 17 实例011: 在屏幕中显示复选框 18 实例012: 在屏幕中显示单选框 21 实例013: 在屏幕中显示下拉列表框 22 实例014: 在屏幕中实现自动输入文本 ...

    类似画图板的小程序-windows

    功能主要有: 手绘线、简单图形、文字输入、图块拖放、重复撤销、画面缩放、打开保存图片文件,另外为了直接从数据库或者XML中存取图片,另外还提供了从Base64编码存取图片的接口,其他还实现了和画图板同样效果的...

Global site tag (gtag.js) - Google Analytics