Android手机游戏开发知识点总结(3)
canvas.drawCircle(60,60,50,paint);//绘制圆形
RectF rectF = new RectF();//绘制椭圆 rectF.bottom=80; rectF.left=160; rectF.right= 300; rectF.top = 10;
canvas.drawOval(rectF, paint);
Path path = new Path();//绘制多边形 path.moveTo(10, 90); path.lineTo(80, 100); path.lineTo(70,150); path.lineTo(10, 200); path.close();//封闭多边形 canvas.drawPath(path, paint);
paint.setStrokeWidth(5);
canvas.drawLine(50,50,300,200, paint); }
paint.setStyle(Paint.Style.FILL);{//设置画笔为实心 paint.setColor(Color.YELLOW);
canvas.drawRect(20,250,300,300, paint); }
shapeDrawableView.DrawShape(canvas);//绘制另一View里的图形到本View中来 }
public void run() {
while(!Thread.currentThread().isInterrupted()){ try{
Thread.sleep(200); }catch(Exception e){
Thread.currentThread().interrupt(); }
postInvalidate();//直接在线程中更新
} } } /**
*Android中可以通过ShapeDrawable来绘制图像。可以通过getPaint方法得到Paint对象,
setBounds 此方法可设置图形显示的区域
通过ShapeDrawable的Draw方法将图形画到屏幕上 */
public class ShapeDrawableView extends View{ ShapeDrawable shapeDrawable; Paint paint;
public ShapeDrawableView(Context context) { super(context); }
public void DrawShape(Canvas canvas){
shapeDrawable = new ShapeDrawable();//------用ShapeDrawable绘图必须要实例化对象
paint=shapeDrawable.getPaint();//得到画笔 paint.setColor(Color.GREEN);//设置画笔颜色 Rect bounds =new Rect(10,310,80,390);//绘制矩形
shapeDrawable.setBounds(bounds);//------用ShapeDrawable绘图必须要使用SetBounds显示区域
shapeDrawable.draw(canvas);//--------用ShapeDrawable绘图必须要使用draw()使图像显示到屏幕上 //另一种写法
/* 实例化ShapeDrawable对象并说明是绘制一个椭圆 */ shapeDrawable = new ShapeDrawable(new OvalShape()); //得到画笔paint对象并设置其颜色
shapeDrawable.getPaint().setColor(Color.GREEN); /* 设置图像显示的区域 */
shapeDrawable.setBounds(70, 250, 150, 280); /* 绘制图像 */
shapeDrawable.draw(canvas);
//以下为绘制多边形 Path path1 = new Path(); /*设置多边形的点*/
path1.moveTo(150+5, 80+80-50); path1.lineTo(150+45, 80+80-50); path1.lineTo(150+30, 80+120-50); path1.lineTo(150+20, 80+120-50); /* 使这些点构成封闭的多边形 */ path1.close();
//PathShape后面两个参数分别是宽度和高度
shapeDrawable = new ShapeDrawable(new PathShape(path1,150,150)); //得到画笔paint对象并设置其颜色
shapeDrawable.getPaint().setColor(Color.BLUE); /* 设置图像显示的区域 */
shapeDrawable.setBounds(100, 170, 200, 280); /* 绘制图像 */
shapeDrawable.draw(canvas); } }
第五部分 字符串绘制
Android中提供了drawText方法来绘制字符串,在绘制执法串之前需要设置画笔对象,包括字符串的尺寸,颜色等属性。使用FontMetrics来规划字体属性 可以用getFontMetrics方法来获得系统字体的相关内容。 setTextSize 设置字符串的尺寸 setARGB 设置颜色
getTextWidths 取得字符串宽度
setFlags(Paint.ANTI_ALIAS_FLAG) 消除锯齿 measureText 得到字符串宽度 得到字符串高度可用:
FontMetrics fontMetrics = paint.getFontMetrics();
textselfHeight = (int)Math.ceil(fontMetrics.descent - fontMetrics.top)+2;//得到文字的高度
textPageLineNum = textHeight/textselfHeight;//每一页的行数 = 绘制区域的高度/文字本身的高度
下例实现了文本翻页,换行。
* 实现文字自动换行 * 自动翻页
public class TextUtil{
int m_iTextPosX; //绘制的x点 int m_iTextPosY; //绘制的y点 int m_iTextWidth; //绘制宽度 int m_iTextHeight; //绘制高度 int m_iFontHeight; //字体高度
int m_ipageLineNum; //每一页显示的行数 int m_iTextBGColor; // 背景颜色 int m_iTextColor; // 字体颜色 int m_iAlpha; //Alpha值
int m_iRealLine; // 字符串真实的行数 int m_iCurLine; //当前行
String m_strText; Vector m_String; Paint m_paint; int m_iTextSize; public TextUtil(){ m_paint = new Paint(); m_String = new Vector(); }
public TextUtil(String strText, int x, int y, int w, int h, int bgcolor, int txetcolor, int a, int iTextSize){ m_paint = new Paint(); m_String = new Vector();
m_strText = strText; m_iTextPosX = x; m_iTextPosY = y; m_iTextWidth = w; m_iTextHeight = h;
m_iTextBGColor = bgcolor; m_iTextColor = txetcolor; m_iTextSize = iTextSize; m_iAlpha = a; } /** * 初始化
* @param strText 要显示的字符串 * @param x x * @param y y * @param w w * @param h h
* @param bgcolor 背景颜色 * @param txetcolor 文字的颜色 * @param a Alpha
* @param iTextSize 字体大小 */
public void InitText(String strText, int x, int y, int w, int h, int bgcolor, int txetcolor, int a, int iTextSize){ m_iCurLine = 0; m_ipageLineNum = 0; m_iRealLine = 0; m_strText = \m_iTextPosX = 0; m_iTextPosY = 0; m_iTextWidth = 0; m_iTextHeight = 0; m_iTextBGColor = 0; m_iTextColor = 0; m_iTextSize = 0; m_iAlpha = 0; m_String.clear();
…… 此处隐藏:2097字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [建筑文档]2018年公需课:专业技术人员创新能力与
- [建筑文档]2013年福建教师招考小学数学历年真题
- [建筑文档]高中信息技术课flash知识点总结 - 图文
- [建筑文档]电工实训 - 图文
- [建筑文档]最高院公告案例分析100篇(民商篇)
- [建筑文档]南开中学高2017级14-15学年(上)期末
- [建筑文档]五粮液集团战略分析
- [建筑文档]鲁教版(2012秋季版)九年级化学 酸碱
- [建筑文档]超星尔雅2017中国哲学概论自整理题库答
- [建筑文档]关于成为海口金盘饮料公司材料独家供货
- [建筑文档]LNG学习资料第一册 基础知识 - 图文
- [建筑文档]四年级品社下册《好大一个家》复习资料
- [建筑文档]现阶段领导权力腐败的特点及发展趋势
- [建筑文档]魏晋南北朝诗歌鉴赏—嵇康
- [建筑文档]坚持追求真爱是理智的行为 正方一辩稿
- [建筑文档]湘西州刑释解教人员帮教安置工作存在的
- [建筑文档]园林工程试题库及答案
- [建筑文档]计算机长期没有向WSUS报告状态
- [建筑文档]日语最新流行语
- [建筑文档]B62-016 景观进场交底专题会议
- 2018年中考语文课内外古诗词鉴赏专题复
- 高考试题研究心得体会
- C语言基础题及答案
- 电气控制及PLC习题及答案
- 都昌小学家长学校汇报材料
- GMAT作文模板正确使用方法
- 俄军办坦克大赛:中国99式有望与豹2A6
- 成本会计练习题
- 酒店餐饮业最流行的5S管理方法
- 2014-2015学年山东省菏泽市高二(下)
- 《黄鹤楼送孟浩然之广陵》教案、说课、
- 2013年结构化学自测题 有答案版
- 2011西安世界园艺博览会游览解说词(附
- 窗口文明单位示范单位创建活动总结
- 2018满分超星尔雅就业课后练习期末答案
- 韶山市城市总体规划-基础资料
- 苏教版第三单元知识点归纳
- 第4章 曲轴模态分析
- 加大查办案件力度的思考
- 武汉CPC导轨介绍




