一.基本知识
在程序中我们可能有需要在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);
}
- 浏览: 344413 次
- 性别:
- 来自: 上海
最新评论
-
angle613163:
大神膜拜呀
String.getBytes() -
夜色蓝:
也遇到同样的问题,按照楼主的方法,问题已解决。
java.io.IOException: Prepare failed.: status=0x1异常解决方法 -
zwyhhmm:
音乐文件如果在SD卡里要用绝对地址,如:/mnt/sdcard ...
java.io.IOException: Prepare failed.: status=0x1异常解决方法 -
xxxl8023:
import java.io.UnsupportedEnco ...
String.getBytes() -
liushilang:
讲得太好了,谢谢!
String.getBytes()
相关推荐
C#中的System.Drawing命名空间提供了与图形处理相关的类,如Bitmap、Graphics、Font、Pen和SolidBrush等,这些是我们在图片上绘制文字所必需的。 2. **Bitmap类**: Bitmap类用于表示位图图像,我们可以创建一个...
总的来说,"C#在图片上绘制文字"涉及的关键点包括使用System.Drawing命名空间,创建Bitmap和Graphics对象,定义Font和Brush,以及调用DrawString方法。通过对这些知识点的理解和实践,开发者能够熟练地在C#应用程序...
这个实例源码很可能是提供了一个完整的解决方案,帮助开发者学习和理解如何利用C#的Graphics类来实现在图片上绘制文字。下面我们将详细探讨这一主题。 首先,我们需要了解C#中的System.Drawing命名空间,它包含了...
通过学习和理解这些基本概念,你可以根据实际需求创建出各种复杂的图像处理应用,包括在图片上绘制文字。源码实例是学习和实践这些概念的好工具,它可以帮助你快速掌握这一技能,并将其应用于实际项目中。
这个“C#在图片上绘制文字完整实例源码”应该提供了一个完整的示例,帮助开发者了解如何在.NET框架下使用C#语言和GDI+(Graphics Device Interface Plus)库来实现这一功能。以下是对这个主题的详细解释: 首先,...
这个"GestureOverlayView绘制文字并保存成图片demo"示例是关于如何结合使用`GestureOverlayView`与图像处理技术来在屏幕上画出文字,并将结果保存为图片的实践教程。 首先,我们需要了解`GestureOverlayView`的基本...
通过这个实例源码,开发者可以学习如何在C#中创建一个Graphics对象,加载图像,设置字体和颜色,以及使用DrawString方法在图片上绘制文字。这些知识对于进行更复杂的图像处理和图形设计应用是基础和必要的。
它让用户能够在屏幕上自由地画线、书写文字,甚至添加图形,极大地提升了远程协作、教学讲解和会议演示的效率。以下是对这个主题的详细展开: 1. **基本功能**:屏幕笔的主要功能包括绘制线条、圈选内容、擦除错误...
接下来,为了在图片上绘制文字,我们需要设置字体、颜色和绘制文本的位置。我们可以使用`Font`类来定义字体样式,`SolidBrush`类来设置填充颜色: ```csharp // 定义字体 Font font = new Font("Arial", 24, ...
在计算机图形学中,将文字显示在图片上并进行旋转是一种常见的需求,特别是在设计、制图和编程领域。GDI+(Graphics Device Interface Plus)是Windows操作系统中的一个图形绘制库,它提供了丰富的功能来处理图像、...
在IT行业中,图片上添加文字是一项常见的图像处理任务,它涉及到图像编辑软件和编程技术的运用。本主题将深入探讨如何在图片上添加文字,包括使用图像编辑工具和编程方法来实现这一功能。 1. 图像编辑软件 - ...
CSDN_Android_Canvas绘制文字 Android 使用Canvas在图片上绘制文字...以上是Android 使用Canvas在图片上绘制文字的方法,包括字体设置、字体风格设置、绘图过程中字体设置、Paint常用方法和图片上绘制文字的实现方法。
首先,创建`Graphics`对象,然后设置字体样式(`Font`对象),并使用`DrawString`方法在指定位置绘制文字。若需要文字有特定颜色,可以创建`SolidBrush`对象并设置其颜色。 6. **保存结果**: 完成叠加和添加文字...
通过重写onDraw()方法,可以直接在Canvas上绘制文字和图片,从而获得更高的定制灵活性。 2. Drawables与Intrinsic尺寸:Android的Drawable类可以包含图像和文本,可以用来创建图文混排的组件。同时,了解Drawable的...
此外,如果你想要在图像上绘制文字并保存为新的图片,你需要先创建一个Bitmap对象,然后使用Graphics对象的DrawImage方法将图像绘制到Bitmap上,最后保存Bitmap为文件。例如: ```csharp Bitmap bmp = new Bitmap...
在C#编程中,生成动态文字和图片并将其叠加到底图上是一项常见的任务,尤其在Web应用开发中,如ASP.NET项目。本教程将详细讲解如何利用C#的Graphics类来实现这一功能。 首先,我们需要理解Graphics类是.NET ...
将电脑屏幕或一张图片当成画板的小工具,也可以截图和保存。功能说明:。1:可抓取屏幕或打开一个图片,F9抓取屏幕;。2:按住Shift键可画正方形,画线时可捕捉45度角和90度;。3:按住Ctrl键可从中心位置开始画;。...
TCanvas是VCL框架中用于图形绘制的核心类,它可以与屏幕、图片、打印机等设备表面进行交互,允许程序员绘制线条、形状和文本。要实现在屏幕上写字,我们需要创建一个TCanvas对象,然后调用其DrawText或TextOut方法,...
4. **绘制文字**: 使用`Graphics.DrawString`方法在图片上写入文本。这个方法接受文本、字体、刷子和位置作为参数: ```vb g.DrawString("Hello, World!", font, brush, New PointF(10, 10)) ``` 5. **保存修改后...