画各种基础图形-以及自定义Button

Canvas(): 创建一个空的画布,可以使用setBitmap()方法来设置绘制具体的画布。 

  Canvas(Bitmap bitmap): 以bitmap对象创建一个画布,则将内容都绘制在bitmap上,因此bitmap不得为null。 
  Canvas(GL gl): 在绘制3D效果时使用,与OpenGL相关。 
  drawColor: 设置Canvas的背景颜色。 
  setBitmap:  设置具体画布。 
  clipRect: 设置显示区域,即设置裁剪区。 
  isOpaque:检测是否支持透明。 
  rotate:  旋转画布 
  setViewport:  设置画布中显示窗口。 
  skew:  设置偏移量。 
  drawRect  画矩形
  drawCicle 画圆形
  drawOval 画椭圆
  drawPath 画直线
  drawPoin 绘制点
画图我们一般会设置画笔的颜色 粗细 等等这时我们要用到Paint类
只要对Paint属性进行设置 就可以得到很多你想要的效果 以下是常用的方法介绍
  setAntiAlias: 设置画笔的锯齿效果。 
  setColor: 设置画笔颜色 
  setARGB:  设置画笔的a,r,p,g值。 
  setAlpha:  设置Alpha值 
  setTextSize: 设置字体尺寸。 
  setStyle:  设置画笔风格,空心(Style.STROKE)或者实心( Style.FILL )。 
  setStrokeWidth: 设置空心的边框宽度。 
  getColor:  得到画笔的颜色 
  getAlpha:  得到画笔的Alpha值。

以下结合这2个类进行简单的几何图形绘制
在绘制之前对canvas中坐标进行简单解释下 这个跟javaSE有点区别

很多图形绘制会用到 left top right bottom 这个四个参数根据这四个参数来确定图形的坐标位置
下面通过对上面的图对四个参数进行解释下
left:既A点 就是A的坐标原点位置
right:既B点 就是B到坐标原点位置
bottom:既C点 就是C到坐标原点的位置
top:既D点 就是D到坐标原点的位置 理解这个之后画图就相当简单了
以下是个常见简单几何图形绘制
效果图如下

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawColor(Color.WHITE); //设置画布背景颜色
Paint paint = new Paint();
paint.setColor(Color.RED);//设置画笔颜色
paint.setStrokeWidth(4); //
paint.setStyle(Style.STROKE);//设置填充类型
// 画圆形
canvas.drawCircle(40, 40, 40, paint);
// 画正方形
canvas.drawRect(0, 90, 80, 170, paint);
// canvas.drawRect(left, top, right, bottom, paint)
// 画长方形
canvas.drawRect(0, 180, 100, 240, paint);
// 画椭圆形
RectF rectF = new RectF(0, 250, 120, 320);
canvas.drawOval(rectF, paint);

// 画三角形
Path path = new Path();
path.reset();
path.moveTo(60, 330);// 开始坐标 也就是三角形的顶点
// path.lineTo(60, 330);
path.lineTo(0, 390);
path.lineTo(120, 390);
path.close();
canvas.drawPath(path, paint);
 
//画梯形
Path path2 = new Path();
path2.reset();
path2.moveTo(30, 400); //左顶点 也即起始点
path2.lineTo(90, 400); //左顶点
path2.lineTo(120, 440); //右底部 
path2.lineTo(0, 440); // 左底部
canvas.drawPath(path2, paint);
                        等同下面===========================
                        path2.moveTo(0, 440);
path2.lineTo(120, 440);
path2.lineTo(90, 400);
path2.lineTo(30, 400);
path2.lineTo(0, 440);
 

画三角形与画梯形的时候要注意 因为只能画多条线 再把根据几条线的坐标 相连 就构成该图形

--------------以上为从其他博客复制--------------------

----------------------------------自定义三角形按钮------------------------------------------------

package com.example.viewdemo1;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;


public class ButtonView extends Button {

Paint p;


public ButtonView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


public ButtonView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}


public ButtonView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}


@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
p = new Paint();
p.setColor(Color.YELLOW);
// 绘制这个三角形,你可以绘制任意多边形
Path path = new Path();
path.moveTo(50, 0);// 此点为多边形的起点
path.lineTo(100, 50);
path.lineTo(0, 50);

path.close(); // 使这些点构成封闭的多边形
canvas.drawPath(path, p);
}
}

    <com.example.viewdemo1.ButtonView
        android:id="@+id/button1"
        android:background="@android:color/transparent"
        android:layout_width="75dp"
        android:layout_height="50dp" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值