导航:首页 > 操作系统 > android绘制圆弧

android绘制圆弧

发布时间:2022-08-22 10:07:04

A. android canvas怎么画圆弧

12345

要实现这个方法,我们要传5个参数进去。
第一个参数:RectF oval
oval 参数的作用是:定义的圆弧的形状和大小的范围
/**
* 这是一个居中的圆
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y); 1234567812345678

第二个参数:float startAngle
这个参数的作用是设置圆弧是从哪个角度来顺时针绘画的
canvas.drawArc(oval,-90,120,false,mPaint);11

canvas.drawArc(oval,90,110,false,mPaint);11

//设置为-180的时候也是这样
canvas.drawArc(oval,180,140,false,mPaint);1212

//设置为360的时候也是这样
canvas.drawArc(oval,0,140,false,mPaint);1212

第三个参数:float sweepAngle
这个参数的作用是设置圆弧扫过的角度
我们从上面的代码就可以知道其中的作用了

第四个参数:boolean useCenter
这个参数的作用是设置我们的圆弧在绘画的时候,是否经过圆形
值得注意的是,这个参数在我们的 mPaint.setStyle(Paint.Style.STROKE); 设置为描边属性的时候,是看不出效果的。
/**
*这里我是偷懒了,建议不要在onDraw()方法里初始化对象
*/
Paint p = new Paint();//这个是画矩形的画笔,方便大家理解这个圆弧
p.setStyle(Paint.Style.STROKE);
p.setColor(Color.RED);

mPaint.setAntiAlias(true);//取消锯齿
mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);

/**
* 这是一个居中的圆
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y);

canvas.drawArc(oval,360,140,false,mPaint);//画圆弧,这个时候,绘制没有经过圆心
canvas.drawRect(oval, p);//画矩形2223

//当我们设置为true的时候,绘制的时候就经过圆心了
canvas.drawArc(oval,360,140,true,mPaint);1212

第五个参数:Paint paint
这个参数的作用是设置我们的画笔对象的属性
mPaint.setAntiAlias(true);//取消锯齿
mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);12341234

这里还是要强调一下,当 p.setStyle(Paint.Style.STROKE)的时候,我们的第四个参数boolean useCenter,是看不到效果的。
下面是代码全文
public class CustomProgress extends View{

private Paint mPaint;

/**
* 圆的宽度
*/
private int mCircleWidth = 3;

public CustomProgress(Context context) {
this(context, null);
}

public CustomProgress(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mPaint = new Paint();
}

@Override
protected void onDraw(Canvas canvas) {
mPaint.setAntiAlias(true);//取消锯齿
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);

/**
* 这是一个居中的圆
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y);

canvas.drawArc(oval,360,140,true,mPaint);
}

B. Android中绘制一条圆弧,但是圆弧两头要是一个半圆,请问这怎么做

paint.setStrokeCap(Paint.Cap.ROUND);

C. android canvas.drawcircle 为什么画不出圆

绘制圆的话,drawcircle需要传圆心坐标和半径大小/画笔进去,我猜你缺少对应的参数,可以参考如下代码:
mPaint.setAntiAlias(false); //设置画笔为无锯齿
mPaint.setColor(Color.BLACK); //设置画笔颜色
canvas.drawColor(Color.WHITE); //白色背景
mPaint.setStrokeWidth((float) 3.0); //线宽
mPaint.setStyle(Paint.Style.STROKE); //空心效果

canvas.drawCircle(50, 50, 10, mPaint); //绘制圆形
canvas.drawCircle(100, 100, 20, mPaint); //绘制圆形
canvas.drawCircle(150, 150, 30, mPaint); //绘制圆形
canvas.drawCircle(200, 200, 40, mPaint); //绘制圆形
canvas.drawCircle(250, 250, 50, mPaint); //绘制圆形
canvas.drawCircle(300, 300, 60, mPaint); //绘制圆形
canvas.drawCircle(350, 350, 70, mPaint); //绘制圆形

D. android用点画圆弧

aint.setStrokeCap(Paint.Cap.ROUND);

E. 求教 Android自定义view画圆弧的问题

简单的思路是画两个圈 取出圆环,然后设置背景色 根据实际进度进行渲染
下面的链接是相关的视频教程 希望可以帮到你
http://www.cniao5.com/course/10049

F. android 怎样让画出的弧形有刻度

public class XChartCalc {

//Position位置
private float posX = 0.0f;
private float posY = 0.0f;

public XChartCalc()
{

}

//依圆心坐标,半径,扇形角度,计算出扇形终射线与圆弧交叉点的xy坐标
public void CalcArcEndPointXY(float cirX, float cirY, float radius, float cirAngle){

//将角度转换为弧度
float arcAngle = (float) (Math.PI * cirAngle / 180.0);
if (cirAngle < 90)
{
posX = cirX + (float)(Math.cos(arcAngle)) * radius;
posY = cirY + (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 90)
{
posX = cirX;
posY = cirY + radius;
}
else if (cirAngle > 90 && cirAngle < 180)
{
arcAngle = (float) (Math.PI * (180 - cirAngle) / 180.0);
posX = cirX - (float)(Math.cos(arcAngle)) * radius;
posY = cirY + (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 180)
{
posX = cirX - radius;
posY = cirY;
}
else if (cirAngle > 180 && cirAngle < 270)
{
arcAngle = (float) (Math.PI * (cirAngle - 180) / 180.0);
posX = cirX - (float)(Math.cos(arcAngle)) * radius;
posY = cirY - (float)(Math.sin(arcAngle)) * radius;
}
else if (cirAngle == 270)
{
posX = cirX;
posY = cirY - radius;
}
else
{
arcAngle = (float) (Math.PI * (360 - cirAngle) / 180.0);
posX = cirX + (float)(Math.cos(arcAngle)) * radius;
posY = cirY - (float)(Math.sin(arcAngle)) * radius;
}

}

//////////////
public float getPosX() {
return posX;
}

public float getPosY() {
return posY;
}

G. android如何在布局中吧.9画成圆弧装

Android画布(Canvas)之--- 圆环,利用Path切除一个扇形,形成一段圆弧效果 [问题...然后再在剩余的画布上画圆形,那么自然截取的图为我上图中想要达到的...

H. android 怎么画一个圆弧的正方形

先来介绍一下画几何图形要用到的,画布(Canvas)、画笔(Paint)。 1. 画一个圆使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐标、radius是半径、paint是画笔,就是画图的颜色; 2. 在画图的时候还要有注意,你所画的矩。可以看看安卓巴士的教程:http://www.apkbus.com/thread-465690-1-1.html

I. DrawArc()方法如何使用

安卓方法DrawArc()用于在画布上绘制圆弧,主要方法是通过指定圆弧所在的椭圆对象、起始角度、终止角度来实现。

1. 基本语法:

public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

参数说明

oval:圆弧所在的椭圆对象。

startAngle:圆弧的起始角度。

sweepAngle:圆弧的角度。

useCenter:是否显示半径连线,true表示显示圆弧与圆心的半径连线,false表示不显示。

paint:绘制时所使用的画笔。

注意:Rect类使用需要小心,详见文末附注。

2. 示例

以下代码示范了如何在画布上绘制圆弧:

protectedvoidonDraw(Canvascanvas){ //TODOAuto-generatedmethodstub super.onDraw(canvas); paint.setAntiAlias(true);//设置画笔为无锯齿 paint.setColor(Color.BLACK);//设置画笔颜色 canvas.drawColor(Color.WHITE);//白色背景 paint.setStrokeWidth((float)3.0);//线宽 paint.setStyle(Style.STROKE); RectFoval=newRectF();//RectF对象 oval.left=100;//左边 oval.top=100;//上边 oval.right=400;//右边 oval.bottom=300;//下边 canvas.drawArc(oval,225,90,false,paint);//绘制圆弧 //RectFoval=newRectF();//RectF对象 oval.left=100;//左边 oval.top=400;//上边 oval.right=400;//右边 oval.bottom=700;//下边 canvas.drawArc(oval,200,135,true,paint);//绘制圆弧 }

代码中,首先设置了Paint画笔的颜色,并设置Canvas画布为白色背景。接着设置画笔的线宽以及空心效果。然后,定义一个RectF对象,并设置了坐标,调用drawArc方法绘制第一个圆弧,此处设置为不显示半径连线。最后,重新设置了RectF对象坐标,调用drawArc方法绘制第二个圆弧,此例显示半径连线。运行代码,可在手机屏幕上看到下图图所示显示效果。

---------------

附注:

Android中的Rect类——奇葩的思维

最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的。不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了。首先介绍一下Rect类:Rect类主要用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要用左上右下两个坐标点表示(left,top,right,bottom),你也可以获取一个Rect实例的Width和Height。就在这里,奇葩的事情来了,作为一个有一点经验的做图像或者矩阵运算或者编程程序员来说,大家的共识是,如果一个矩阵是MxN的,也就是M行N列,那么行号是[0,M-1],列号是[0,N-1]。可是奇葩的Rect类并不是这样的!如果你这么声明一个Rect类:

Rect rect=newRect(100,50,300,500);

那么右下角(300,500)其实是不在这个矩形里面的,但是左上角(100,50)在,也就是说,这个矩形实际表示的区域是:(100,50,299,499)。另外,Rect计算出的Height和Width倒是对的。所以,在此告诫各位程序员,在涉及Rect运算的时候,尽量不要使用它的右下角左边,即right和bottom。因为他们是错的。当然,在你调用android自己的函数时,是可以使用的,因为Android里面一直保持这么奇葩的思维。

J. android 怎么画一个半圆

shape可以设置某一个角圆角,但实现你这个估计不行,你可以叫美工绘制一个,带java代码里面进行控制替换

阅读全文

与android绘制圆弧相关的资料

热点内容
ubuntu1404安装php 浏览:628
lua能编译吗 浏览:106
思仙怎么看服务器 浏览:656
php微信图片防盗链 浏览:796
安卓1怎么读音 浏览:287
农业app怎么开通快捷支付 浏览:908
pythonredisdict 浏览:383
如何攻击别人网赌服务器 浏览:878
隐私与应用加密的图案密码 浏览:34
陈情令王一博解压 浏览:35
c编译器使用说明 浏览:703
郑州前端程序员私活有风险吗 浏览:14
小型螺杆机压缩机 浏览:518
成人解压最好的方法 浏览:50
最小制冷压缩机 浏览:490
xampp支持python 浏览:367
深圳周立功单片机 浏览:61
圆上点与点之间角度算法 浏览:869
怎么知道微信关联了哪些app 浏览:702
android事件驱动 浏览:888