`
jsntghf
  • 浏览: 2542718 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

drawRect的简单示例

    博客分类:
  • iOS
阅读更多

头文件:

 

#import <UIKit/UIKit.h>
#include <math.h>

static inline double radians(double degrees) {
	return degrees * M_PI / 180;
}

#define FontSize 20.0f

@interface DrawScreen : UIView {
	
}

- (void)drawTextByString:(NSString *)drawText thePoisition:(CGPoint)point;
- (void)drawPicByImage:(UIImage *)theImage theRect:(CGRect)rect;
- (void)drawTextByQuartz:(CGContextRef)context theText:(const char *)drawtext 
			thePoisition:(CGPoint)point rotateAngle:(float)angle;
- (void)drawPicByQuartz:(CGContextRef)context thePic:(UIImage *)theImage theLocation:(CGRect)rect;

@end

 

实现文件:

 

#import "DrawScreen.h"

@implementation DrawScreen

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.backgroundColor = [UIColor blackColor];
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
	CGContextRef context = UIGraphicsGetCurrentContext();
	CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
	
	//方式一:用NSString的方式画字,用UIImage的方式画图片,坐标原点在左上角
	NSString *textOne = [NSString stringWithFormat:@"iPad"];
	NSString *textTwo = [NSString stringWithFormat:@"iPhone"];
	[self drawTextByString:textOne thePoisition:CGPointMake(50.0f, 260.0f)];
	[self drawTextByString:textTwo thePoisition:CGPointMake(250.0f, 260.0f)];
	UIImage *flagOne = [UIImage imageNamed:@"flag.png"];
	[self drawPicByImage:flagOne theRect:CGRectMake(50.0f, 200.0f, 45.0f, 45.0f)];
	[self drawPicByImage:flagOne theRect:CGRectMake(250.0f, 200.0f, 45.0f, 45.0f)];
	
	//方式二:用Quartz2D的方式画字和图片,坐标原点移动到左下角
	CGContextTranslateCTM(context, 0, self.bounds.size.height);
	CGContextScaleCTM(context, 1, -1);
	UIImage *flagTwo = [UIImage imageNamed:@"location.png"];
	[self drawTextByQuartz:context theText:"Apple" thePoisition:CGPointMake(160.0f, 200.0f) rotateAngle:45.0f];
	[self drawTextByQuartz:context theText:"iPod" thePoisition:CGPointMake(50.0f, 100.0f) rotateAngle:45.0f];
	[self drawTextByQuartz:context theText:"iMac" thePoisition:CGPointMake(250.0f, 100.0f) rotateAngle:45.0f];
	[self drawPicByQuartz:context thePic:flagTwo theLocation:CGRectMake(160.0f, 230.0f, 50.0f, 50.0f)];
	[self drawPicByQuartz:context thePic:flagTwo theLocation:CGRectMake(50.0f, 130.0f, 50.0f, 50.0f)];
	[self drawPicByQuartz:context thePic:flagTwo theLocation:CGRectMake(250.0f, 130.0f, 50.0f, 50.0f)];
}

- (void)dealloc {
    [super dealloc];
}

- (void)drawTextByString:(NSString *)drawText thePoisition:(CGPoint)point {
	//方式一
	[drawText drawAtPoint:point withFont:[UIFont systemFontOfSize:FontSize]];
}

- (void)drawPicByImage:(UIImage *)theImage theRect:(CGRect)rect {
	//方式一
	[theImage drawInRect:rect];
}

- (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));
}

- (void)drawPicByQuartz:(CGContextRef)context thePic:(UIImage *)theImage theLocation:(CGRect)rect {
	//方式二
	CGContextDrawImage(context, rect, theImage.CGImage);
}

@end

 

示例图:


分享到:
评论

相关推荐

    自定义滑动选择器简单示例

    本示例“自定义滑动选择器简单示例”旨在帮助开发者理解如何在Android应用中创建自定义的滑动选择器。下面将详细讲解这个Demo涉及的关键知识点。 1. **自定义View**: Android中的自定义滑动选择器通常需要我们...

    android画图简单示例

    这个示例项目,名为“android画图简单示例”,旨在帮助开发者理解如何利用Android SDK中的相关API来创建这样一个交互式的图形界面。下面将详细阐述实现这些功能的关键知识点。 首先,我们关注的是画图功能。在...

    matlab开发-DrawRect

    本项目名为"matlab开发-DrawRect",旨在提供一个简单但实用的功能,即在图像上绘制1像素宽度的矩形。这个功能通过指定颜色("R"、"G"或"B"代表红色、绿色或蓝色)来改变矩形的显示效果,增加了图像标注和分析的灵活...

    iOS的Object-C中drawRect:的使用

    在YMDrawRectTest项目中,你可能会看到一个简单的示例,展示如何在自定义UIView子类中重写`drawRect:`方法,进行基本的图形绘制。通过查看源代码,你可以学习到如何结合Core Graphics框架实现自定义视图的绘制逻辑。...

    IOS drawRect 自定义绘图,自定义任意类型的图形和动画

    在iOS开发中,自定义绘图是实现独特视觉效果和高效性能的重要手段。`drawRect:` 方法是UIKit...这可能包括不同形状的绘制,颜色的变化,以及简单的动画效果。深入研究这个示例,将有助于你掌握自定义绘图的核心技能。

    DrawRect0909.rar

    这个"DrawRect0909.rar"文件很可能包含了关于使用Qt进行图形绘制的相关教程或示例代码,特别是与矩形绘制相关的知识点。Qt库提供了一套完整的工具和API,使得开发者可以方便地创建具有丰富用户界面的应用程序,包括...

    小程序生成动态海报用于分享朋友圈简单示例

    本示例旨在教你如何在小程序中实现这一功能,让用户体验更加丰富和个性化。 首先,我们需要理解小程序的基本架构。微信小程序是一种轻量级的应用,它基于JavaScript,使用WXML(WeiXin Markup Language)和WXSS...

    DrawRect Demo代码

    这个Demo代码示例将引导我们深入理解如何在iOS应用中使用`drawRect:`方法来画矩形和其他图形。让我们详细探讨一下相关的知识点。 首先,`drawRect:`是UIView类的一个方法,它允许我们在指定的矩形区域内进行图形...

    android 自定义View类的简单使用 示例

    这篇博客将带你深入了解如何简单地使用自定义View,并通过一个具体的示例进行讲解。文章链接为,尽管描述部分为空,但我们可以根据标题和标签来探讨相关知识点。 1. **自定义View的基本结构**: - 自定义View通常...

    j2me手机游戏编程入门 示例

    例如,可以使用drawRect()、drawString()等方法绘制按钮、文本和游戏元素,同时通过keyPressed()、keyReleased()等事件处理函数来响应用户的按键操作。 二、动画 在J2ME中实现游戏动画通常涉及到帧管理和时间控制。...

    Java实现的简单画图板示例

    "Java实现的简单画图板示例" Java实现的简单画图板示例是一个使用Java语言和Swing组件库实现的图形绘制应用程序。该示例程序主要涵盖了Java中的图形绘制相关操作技巧,包括图形绘制、颜色选择、事件监听等方面的...

    J2me 坦克大战 代码示例

    3. **图形绘制**:J2ME中的`Graphics`类提供了基本的绘图操作,如`drawRect()`, `drawImage()`, `fillPolygon()`等,用于绘制游戏元素。开发者需要熟练掌握这些方法来创建游戏画面。 4. **事件处理**:`KeyListener...

    Adnroid 九宫格手势密码示例

    开发者会用到`Canvas`的`drawRect()`、`drawLine()`等方法。 4. **数据存储**: 用户设置的手势密码需要保存以便后续验证。这通常通过`SharedPreferences`完成,将手势路径编码为字符串后存储,然后在验证时读取并...

    iOS的Quartz2D技术demo示例

    4. **文本渲染**:Quartz 2D不仅支持简单的文字绘制,还能实现复杂的排版效果,如字体选择、大小、颜色、对齐方式等。`CTFontCreateWithName`用于创建字体对象,`CTStringAttributes`可以设置文本属性,`CTLineDraw`...

    3个安卓屏幕尺子的demo示例

    在安卓平台上,开发一款屏幕尺子应用可以帮助用户利用手机进行简单的测量。本示例提供了三个不同的安卓屏幕尺子的demo,旨在展示如何实现这一功能。这些demo可能包含了各种技术点,如图形绘制、触摸事件处理、单位...

    CocoaOpenGL-Swift:使用Swift创建适用于macOS,iOS和tvOS的OpenGL应用程序的简单示例

    2. **绘制循环**:在OpenGL中,我们通过重写`drawRect:`方法来定义绘制逻辑。这个方法会在每次需要更新视图时被调用。在这个方法内,我们可以使用OpenGL函数进行顶点数组设置、纹理映射、着色器程序编译等操作。 3....

    CairoTestMac:一个简单的示例应用程序,它使用跨平台的 Cairo 图形库绘制成 Cocoa NSView

    它在窗口中创建一个新视图,并在该视图的 -drawRect: 方法中为该视图创建一个开罗表面和上下文,然后在该视图内绘制一个矩形。 安装/要求 这假设您在 /usr/local 中有 Cairo。 最简单的方法可能是使用 Homebrew,...

    android 绘图 简单演示

    本篇文章将深入探讨“android绘图简单演示”,并以Canvas的实现为重点,结合提供的CanvasDemo示例,来解析Android图形绘制的基础知识。 首先,Canvas提供了丰富的绘图方法,如drawRect、drawCircle、drawLine、...

    新手简单的画图程序源代码

    下面是一段简化的代码示例,展示了一个基本的画图程序框架: ```java import javax.swing.*; import java.awt.*; public class SimpleDrawApp extends JFrame { public static void main(String[] args) { ...

    DrawImageTest Demo代码

    除了简单地绘制图像,还可以利用`CGAffineTransform`进行旋转、缩放、平移等操作。例如,可以使用`image?.withAlignmentRectInsets()`和`CGAffineTransformMakeScale()`等方法。 6. 性能优化: - 由于`drawRect:`...

Global site tag (gtag.js) - Google Analytics