【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)

1.Paint画笔

Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式、颜色等属性信息。Paint 的常用方法如下:

setAntiAlias(boolean aa)

作用:设置画笔是否无锯齿

参数:true 表示无锯齿,false 表示有锯齿,默认为 false 。

setAlpha(int a)

作用:设置画笔的透明度

参数:透明值

setTextAlign(Paint.Align align)

作用:设置绘制文本的锚点

参数:Paint.Align 类中的常量

measureText(String text)

作用:获取文本内容的宽度

参数:文本内容

setStyle(Style style)

作用:设置画笔样式

参数:样式实例

setColor(int color)

作用:设置画笔颜色

参数:色值

setStrokeWidth(float width)

作用:设置画笔额粗细程度

参数:画笔粗细值

setTextSize(float textSize)

作用:设置画笔在绘制文本时,文本字体的尺寸

参数:尺寸值

setARGB(int a,int r,int g,int b)

作用:设置画笔的ARGB分量

第一个参数:画笔透明度分量

第二个参数:画笔红色分量

第三个参数:画笔绿色分量

第四个参数:画笔蓝色分量

2.Paint 画笔实例

效果图如下:

步骤:新建项目“PanitProject”,游戏框架为MySurfaceView 游戏框架,具体步骤参照“11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)”。

主要绘图方法myDraw()修改如下:

 public void myDraw()
    {
        try {
            canvas =sfh.lockCanvas();
            if(canvas!=null)
            {
               canvas.drawColor(Color.WHITE);
                //--设置画笔无锯齿
                Paint paint1 = new Paint();
                canvas.drawCircle(40,30,20,paint1);
                paint1.setAntiAlias(true);
                canvas.drawCircle(100,30,20,paint1);
                //--设置画笔的透明度
                canvas.drawText("无透明度",100,70,new Paint());
                Paint paint2 = new Paint();
                paint2.setAlpha(0x77);
                canvas.drawText("半透明度",20,70,new Paint());
                //--设置绘制文本的锚点
                canvas.drawText("锚点",20,90,new Paint());
                Paint paint3 = new Paint();
                //设置以文本的中心点绘制
                paint3.setTextAlign(Paint.Align.CENTER);
                canvas.drawText("锚点",20,105,paint3);
                //--获取文本的长度
                Paint paint4 = new Paint();
                float len = paint4.measureText("文本宽度:");
                canvas.drawText("文本长度:"+len,20,130,new Paint());
                //--设置画笔样式
                canvas.drawRect(new Rect(20,140,40,160),new Paint());
                Paint paint5 = new Paint();
                //设置画笔不填充
                paint5.setStyle(Paint.Style.STROKE);
                canvas.drawRect(new Rect(60,140,80,160),paint5);
                //--设置画笔颜色
                Paint paint6 = new Paint();
                paint6.setColor(Color.BLUE);
                canvas.drawText("蓝色",30,180,paint6);
                //--设置画笔的粗细程度
                canvas.drawLine(20,200,70,200,new Paint());
                Paint paint7 = new Paint();
                paint7.setStrokeWidth(7);
                canvas.drawLine(20,220,70,220,paint7);
                //--设置画笔绘制文本的字体粗细
                Paint paint8 = new Paint();
                paint8.setTextSize(20);
                canvas.drawText("文字尺寸",20,260,paint8);
                //--设置画笔的ARGB 分量
                Paint paint9 = new Paint();
                paint9.setARGB(0x77,0xff,0x00,0x00);
                canvas.drawText("红色半透明",20,290,paint9);
            }
        }
        catch(Exception ex){

        }finally {
            if(canvas!=null)
            {
                sfh.unlockCanvasAndPost(canvas);
            }
        }
    }

Paint 画笔类提供了一个抗锯齿的函数,其实 Canvas 画布也提供额绘图抗锯齿的函数,如下所示:

Canvas.setDrawFilter(DrawFilter filter);

作用:为画布设置绘图抗锯齿

参数:绘图过滤器实例

实例化一个DrawFilter 类的对象,代码如下所示:

PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0,Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
时间: 2024-10-10 18:27:08

【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)的相关文章

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被

【读书笔记-《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建

简单的记录下笔记,具体可百度! Android SDK (Software Development Kit)- Android 软件开发工具包,用于辅助Android 操作系统软件开发,是开发Android 软件.文档.范例.工具的一个集合.Android NDK (Native Development Kit) - 类似 Android SDK,可用C/C++语言编写Android程序. developer.android.com - 可查阅到 Android SDK. 开发指南.API说明等

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

【读书笔记-《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)

3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar.html 在Android应用开发中,ProgressBar(运行进度条)是比较常用到的组件,例如下载进度.安装程序进度.加载资源进度显示等.在Android中提供了两种样式来分别表示在不同状态下显示的进度条,下面来实现这两种样式.默认进度条是圆形,通过style属性来指定系统进度条的大小:sty

【读书笔记-《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)

3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottomand

【读书笔记-《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)

3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.html Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多. <?xml version="1

Android游戏编程之从零开始pdf

下载地址:网盘下载 <Android游戏编程之从零开始>主要系统地讲解了Android游戏开发,从最基础部分开始,让零基础的Android初学者也能快速学习和掌握Android游戏开发.<Android游戏编程之从零开始>一共8章,内容包括Android平台介绍与环境搭建.Hello,Android!项目剖析.游戏开发中常用的系统组件.游戏开发基础.游戏开发实战.游戏开发提高篇.Box2d物理引擎.物理游戏实战.随书光盘包括全书65个项目源代码.<Android游戏编程之从零

Windows游戏编程之从零开始d

I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来浅墨的博客逛一下看有没有更新,"每天都来就像看女神那般不依不舍",弄得我再不更新都不好意思了,哈哈~怎么说呢,前段时间忙毕设,回国,暑假,间隔年旅行休整,然后是适应新的生活,各种事情,也真正没有心境来更新博客了,最近正好心境安定下来,就继续开始写博.额,关于思想汇报改天我专门写一篇文章和大家交流交流,现在先打住说正事吧~ 首

读书笔记-----Java并发编程实战(一)线程安全性

线程安全类:在线程安全类中封装了必要的同步机制,客户端无须进一步采取同步措施 示例:一个无状态的Servlet 1 @ThreadSafe 2 public class StatelessFactorizer implements Servlet{ 3 public void service(ServletRequest req,ServletResponse resp){ 4 BigInteger i = extractFromRequest(req); 5 BigInteger[] fact

游戏新手村:从零开始做游戏

写在前面的话 年前看到张亮<从零开始做运营>在百度阅读上发布,于是便萌生了自己也撰写1篇作品的想法.首先是为了记录自己的想法.记录和观点,其次也算是对自己过去几年做游戏的一点总结,最后也想过把瘾:"看,这是哥写的书". 为什么要写这本书 最近这10多年是中国游戏产业蓬勃发展的10多年.一波又一波的游戏公司先后上市,一个又一个的千万富翁陆续诞生,一批又一批的有志年轻人和应届毕业生前仆后继的进入到了游戏行业,去从事游戏策划以及游戏运营等工作. 互联网的精神是开放和分享,但是游戏