首页 > 其他分享 >[Object-C语言随笔之四]创建视图并绘制简单图形

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

时间:2022-11-25 15:33:28浏览次数:70  
标签:自定义 Object 视图 C语言 UIColor GameView context 绘制


 李华明Himi ​​原创,转载务必在明显处注明

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

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

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

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

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


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

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

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

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

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

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

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

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

第二种方式: 直接把定义的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的完整代码:

//

// 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


项目截图:

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

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


源码下载地址: ​​http://www.himigame.com/iphone-object/401.html​

标签:自定义,Object,视图,C语言,UIColor,GameView,context,绘制
From: https://blog.51cto.com/xiaominghimi/5886798

相关文章

  • 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明-------------【11月28日更新解决添加组件Cocos2d动画停止播放的BUG】--------​​【iOS-Cocos2d游戏开发之七】在cocos......
  • 【iOS-cocos2d-X 游戏开发之十四】Xcode中c++&Object-C混编,详细介绍如何在cocos2dx中
    本站文章均为​​ 李华明Himi ​​​原创,转载务必在明显处注明Cocos2dx系列博文的上一篇详细介绍了如何在Xcode中利用jni调用Android的Java层代码,还没有看过的童鞋,请移步......
  • AbstractQueuedSynchronizer 的内部类 ConditionObject
    AbstractQueuedSynchronizer的内部类ConditionObjectJava1.8.0_341publicclassConditionObjectimplementsCondition,java.io.Serializable{privatestatic......
  • UML核心视图
    分类作用静态视图表达结构性特征动态视图表达行为性特征 用例图用例视图是系统蓝图和开发的依据业务用例视图业务主角......
  • 002 写第一个ArcObject SDK程序
    1、开发环境基于ArcObjectsSDK开发,开发环境一般选用VisualStudio,开发语言使用C#,开发包使用ArcObjectsSDKfor.Net。UI有的使用Winform,也可以使用WPF。调用的时候,不关......
  • Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
    批量删除表、视图、序列、存储过程、函数前,生成对应的SQL执行脚本,然后执行生成对应的脚本即可:一、删除数据库表   --生成删除oracle数据库表的脚本语句   select......
  • Objects.requireNonNull的意义是什么
    Objects.requireNonNull方法的源码是这样:publicstatic<T>TrequireNonNull(Tobj){if(obj==null)thrownewNullPointerException();returno......
  • 第8节-MySQL索引与视图
    8.1、索引8.1.1、索引优缺点索引的优点:1、可以提高查询数据的速度;2、通过创建唯一索引,可以保证数据库表中每一行数据的唯一性;3、在实现数据的参考完整性方面,可以......
  • C语言 | 三子棋游戏
    C语言实现《三子棋》小游戏1-需求分析1️⃣游戏规则介绍:双方轮流下子,直到三个子连成一条线,横、竖、斜线都可以,谁先达到这个要求就获胜,或者说棋盘满了,则游戏平局结束[1]......
  • 喝汽水--C语言
    问题:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?分析:1.20元肯定可以喝20瓶2.2个空瓶可以换一瓶汽水,则剩下瓶子数量:empty/2+empty%2empty/2:表示成功换汽水的......