Android studio之图形与图像处理(1)

// 绘制正方形

canvas.drawRect(viewWidth / 5 + 20 , viewWidth / 5 + 20

, viewWidth * 2 / 5 + 20 , viewWidth * 2 / 5 + 20 , paint);

// 为Paint设置渐变器

Shader mShader = new LinearGradient(0, 0, 40, 60

, new int[] {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }

, null , Shader.TileMode.REPEAT);

paint.setShader(mShader);

//设置阴影

paint.setShadowLayer(25 , 20 , 20 , Color.GRAY);

// 绘制圆形

canvas.drawCircle(viewWidth / 2 + 30, viewWidth / 10 + 10

, viewWidth / 10, paint);

// 绘制正方形

canvas.drawRect(viewWidth * 2 / 5 + 30 , viewWidth / 5 + 20

, viewWidth * 3 / 5 + 30 , viewWidth * 2 / 5 + 20 , paint);

canvas.drawText(getResources().getString(R.string.circle)

, 60 + viewWidth * 3 / 5, viewWidth / 10 + 10, paint);

canvas.drawText(getResources().getString(R.string.square)

, 60 + viewWidth * 3 / 5, viewWidth * 3 / 10 + 20, paint);

}

}

结果截图如下:

在这里插入图片描述

(2)Path类

Android提供的Path是一个非常有用的类,它可以在View上将几个点连成一条路径,然后可以调用Canvas中的drawPath(path,paint)方法沿着该路径进行绘图,这些所谓的绘图效果说起来大家很难理解,下面我们通过一段代码来让大家更好的理解一下这些效果,这个应用绘制了7条路径:

关键代码如下:

import android.app.Activity;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.ComposePathEffect;

import android.graphics.CornerPathEffect;

import android.graphics.DashPathEffect;

import android.graphics.DiscretePathEffect;

import android.graphics.Paint;

import android.graphics.Path;

import android.graphics.PathDashPathEffect;

import android.graphics.PathEffect;

import android.graphics.SumPathEffect;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

public class MainActivity extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(new MyView(this));

}

class MyView extends View

{

float phase;

PathEffect[] effects = new PathEffect[7];

int[] colors;

private Paint paint;

Path path;

public MyView(Context context)

{

super(context);

paint = new Paint();

paint.setStyle(Paint.Style.STROKE);

paint.setStrokeWidth(4);

// 创建并初始化Path

path = new Path();

path.moveTo(0, 0);

for (int i = 1; i <= 40; i++)

{

path.lineTo(i * 20, (float) Math.random() * 60);

}

// 初始化7个颜色

colors = new int[] { Color.BLACK, Color.BLUE, Color.CYAN,

Color.GREEN, Color.MAGENTA, Color.RED, Color.YELLOW };

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值