[OBJECT-C语言随笔之四]创建视图并绘制简单图形

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-object/401.html

这段时间N忙,没办法,创业公司,当然抽时间也仍然再自学ios~OK,基础的语言基础,我就不多说了,从今天开始直接写游戏开发部分了;

声明一点:iOS游戏开发系列没有我写的Android游戏开发系列有权威性,因为我也是在学习中,只是拿出来给大家分享,希望大家不要较真,现在咱们都是一年级新生,咳咳,好啦,不多说了,下面开始进入正题;

绘制一个图形,首先我们肯定需要一个视图view,在iOS中是UIView,下面用两种方式介绍如何在iphone上显示视图;

首先创建一个项目:(Window-based Application)

然后新建一个自定义的GameView类,继承UIView类;

Ok,除了继承UIVIew,其他什么都不用修改和改动,下面介绍显示视图的两种方式,

第一种方式: 利用Interface Builder工具进行视图绑定;

双击当前项目的,MainWindow.xib,启动 Interface Builder;

从Library中拖出一个VIew控件至Window中,(调整view填充屏幕即可),然后修改此View关联刚才创建的GameView的视图类,

关联其实就是在“Game View Identity”视图框中将Class 指向 GameView即可;然后保存;完成!

 

第二种方式: 直接把定义的UIView添加到Window中;

(创建完项目,系统默认生成这两个类。MyViewTestAppDelegate.h,MyViewTestAppDelegate.m )

修改 MyViewTestAppDelegate.h类,添加一个我们自定义的视图类:

 

GameView *view;

 

然后修改MyViewTestAppDelegate.m,实例我们自定义的视图类并且添加到window视图中;

 

//CGRect drawingArea=[window bounds];  //确定视图大小,这里默认为整个屏幕大小(除了状态栏)

CGRect square = CGRectMake(0, 0, 320, 480);//自定义屏幕大小(除了状态栏)

[window addSubview:[[GameView alloc] initWithFrame:square]];

 

到此两种显示视图的方法都介绍完了,其实都是类似,第一种通过可视化操作,让系统为我们生成视图添加到window中的代码关系,第二种则是我们通过代码直接让window添加自定义的视图类的实例而已;当然到此是看不到任何效果的,因为视图中没有绘制任何的东西;

下面我们来在我们的视图GameView中绘制个三角形吧;

其实绘制很容易,只要重写UIView的   -(void) drawRect:(CGRect)rect; 函数即可;至于如何绘制三角形,这里直接提供代码,很简单就不再详细讲解了,每行代码我也有相对应的备注的;

GameView.m的完整代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

//

//  GameView.m

//  MyViewTest

//

//  Created by Himi on 11-7-25.

//  Copyright 2011 __MyCompanyName__. All rights reserved.

//  

 

#import "GameView.h"  

 

@implementation GameView

-(void) drawRect:(CGRect)rect{

    //-------以下方式只用UIKIT 提供的画图类进行,此方式非常简单

    //  CGRect recte = [self bounds];//自定义绘图区域(大小默认屏幕大小)

    //  [[UIColor greenColor] set];//设置颜色为绿色

    //  UIRectFill(recte);//填充绿色区域

    //  CGRect square = CGRectMake(50, 50, 100, 100);//自定义区域

    //  [[UIColor yellowColor] set];//设置颜色为黄色

    //  UIRectFill(square);//填充黄色区域

    //  [[UIColor blackColor] set];//设置黑色

    //  UIRectFrame(square);//这里不是填充,为黄色区域绘制黑色边框  

 

    //-------以下方式只用CG 提供的画图类进行,此方式可以绘制复杂的绘制

    //填充背景为绿色

    [[UIColor greenColor]set];

    UIRectFill([self bounds]);

    //拿到当前视图准备好的画板

    CGContextRef context = UIGraphicsGetCurrentContext();

    //利用path进行绘制三角形

    CGContextBeginPath(context);//标记

    CGContextMoveToPoint(context, 50, 30);//设置起点

    CGContextAddLineToPoint(context, 10, 150);

    CGContextAddLineToPoint(context, 100, 150);

    CGContextClosePath(context);//路径结束标志,不写默认封闭

    [[UIColor yellowColor] setFill];

    [[UIColor blackColor] setStroke];

    CGContextDrawPath(context, kCGPathFillStroke);//绘制路径path

}  

 

@end

项目截图:

 

ok,本章节就介绍到这里,都22点了 - -,回家回家。。咳咳;

源码下载:  “MyViewTest.zip”         下载地址: http://vdisk.weibo.com/s/hrh9i

时间: 2025-01-02 16:52:21

[OBJECT-C语言随笔之四]创建视图并绘制简单图形的相关文章

《Python语言程序设计》——3.7 绘制各种图形

3.7 绘制各种图形 关键点:Python的Turtle模块里包含移动笔.设置笔的大小.举起和放下笔的方法.第1章介绍如何使用Turtle绘画.一个Turtle实际上是一个对象,在导入Turtle模块时,就创建了对象.然后,可以调用Turtle对象的各种方法完成不同的操作.本节将介绍Turtle对象更多的方法.当创建一个Turtle对象时,它的位置被设定在(0,0)处--窗口的中心,而且它的方向被设置为向右.Turtle模块用笔来绘制图形.默认情况下,笔是向下的(就像真实的笔尖触碰着一张纸).如

关于创建视图的问题

今天开发碰到一个问题,说创建视图的时候老是提示没有权限. SQL> create view test_view as select *from customer; create view test_view as select *from customer                                       * ERROR at line 1: ORA-01031: insufficient privileges 第一反应是这个schema没有create view的权限

NetBeans6.1入门教程系列(2)--- 数据库的设计查询以及创建视图

用过MS SQL的朋友都知道他有个视图设计器,可以很方便的创建视图.在NetBeans6.1 中也有这样的 功能.大家看看截图: 选择添加表以后就会弹出对话框,让你选择添加那个表: 添加完以后最终的显示效果: 设计好查询后,大家就可以创建自己的视图了,在导航栏里选择视图选项,然后右键选择"创建视图 ":

mysql ecshop-mysl 创建视图然后查询

问题描述 mysl 创建视图然后查询 create view gaojia as select cat_id,goods_id,goods_name,shop_price from goods order by cat_id , shop_price desc; select * from gaojia group by cat_id; 这样并不能查询出每个cat_id下的最高价商品: 这是ecshop下面的库,如果不创建视图,直接用子查询是能查询出正确结果的,创建视图后就不正确了,诸位谁能帮我

select-oracle创建视图 报错 [Err] ORA-00905: missing keyword

问题描述 oracle创建视图 报错 [Err] ORA-00905: missing keyword SELECT 0 AS cpxx_id, t_ckgl_wlcc.ccdbh AS djbh, t_ckgl_wlcc.xgsj AS xgsj, 0 AS ycl_dhd_id, t_ckgl_wlccmx.ccdmx_id AS ccdmx_id, 0 AS sctl_id, 0 AS zt, t_ckgl_wlcc.zzjgdm AS zzjgdm, ( SELECT t_jygl_cr

mysql中创建视图时视图的名称对数据有影响?!?

问题描述 mysql中创建视图时视图的名称对数据有影响?!? 这学期刚刚学数据库,关于mysql创建视图的问题 创建视图的语句: create view supply(sno, pno, qty) as select spj.sno, spj.pno, spj.qty from spj, j where j.jno = spj.jno and j.jname = '三建'; 这样视图创建成功,但是select * from supply;时查询结果是空empty set. 如果将视图名由supp

如题,下面这段SQL语句怎么创建视图

问题描述 如题,下面这段SQL语句怎么创建视图 select T2.F_BuildName,sum(F_WarnValue) - sum(F_Value) F_Value from T_DC_UllimitWarnInfo T1,dbo.T_BD_BuildBaseInfo T2 where T1.F_BuildID=T2.F_BuildID and F_UpperLowerType=0 and F_Uint=3 and F_EnergyItemCode='02000' and T1.F_Bui

如何在MySQL中创建视图?

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]    VIEWview_name[(column_list)]    ASselect_statement    [WITH [CASCADED | LOCAL] CHECK OPTION] 该语句能创建新的视图,如果给定了OR REPLACE子句,该语句还能替换已有的视图.select_statement是一种SELECT语句,它给出了视图的定义.该语句可从基表或

mysql view-MySql 创建视图无记录问题

问题描述 MySql 创建视图无记录问题 创建一个视图一个试图,在查询的时候,如果这个表没有记录却要在视图中显示一条记录,请各位大师帮帮忙解决一下?非常感谢!