java的drawarc的简单介绍

博主:adminadmin 2023-01-22 09:27:10 265

本篇文章给大家谈谈java的drawarc,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用JAVA编写圆

代码如下:

import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class TestSw extends JFrame { public static void main(String[] args) { new TestSw(); } public TestSw(){ super("Test"); this.setSize(new Dimension(400,300)); this.setContentPane(new Mypane()); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class Mypane extends JPanel{ public void paint(Graphics g) { super.paint(g); g.setColor(Color.red); g.setXORMode(Color.white); g.drawArc(20, 20, 100, 100, 0, 360); ///此方法将画一个直径100的圆.红色. } } }

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. 示例

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

protected void onDraw(Canvas canvas) {      // TODO Auto-generated method stub      super.onDraw(canvas);      paint.setAntiAlias(true);                       //设置画笔为无锯齿      paint.setColor(Color.BLACK);                    //设置画笔颜色      canvas.drawColor(Color.WHITE);                  //白色背景      paint.setStrokeWidth((float) 3.0);              //线宽      paint.setStyle(Style.STROKE);            RectF oval=new RectF();                     //RectF对象      oval.left=100;                              //左边      oval.top=100;                                   //上边      oval.right=400;                             //右边      oval.bottom=300;                                //下边      canvas.drawArc(oval, 225, 90, false, paint);    //绘制圆弧            //RectF oval=new RectF();                       //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=new Rect(100,50,300,500);

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

java 的旋转 太极图 问题....

由于在double转int时有精度损失,所以转动时会隐约有一条直线。

代码如下:

import java.awt.*;

import javax.swing.*;

public class MyPanel extends JPanel

{

private int r = 150;

private int angle = 0;

public void paintComponent(Graphics g)

{

int x = (int)(r/2*Math.cos(angle/180.0*Math.PI));

int y = -(int)(r/2*Math.sin(angle/180.0*Math.PI));

g.translate(r+10, r+10);

g.setColor(Color.BLACK);

g.fillArc(-r, -r, 2*r, 2*r, angle, -180);

g.setColor(Color.WHITE);

g.fillArc(-r, -r, 2*r, 2*r, angle, 180);

g.fillArc(x-r/2, y-r/2, r, r, angle, -180);

g.setColor(Color.BLACK);

g.fillArc(-x-r/2, -y-r/2, r, r, angle, 180);

g.drawOval(-r, -r, 2*r, 2*r);

g.fillOval(x-10, y-10, 20, 20);

g.setColor(Color.WHITE);

g.fillOval(-x-10, -y-10, 20, 20);

}

public void setAngle(int angle)

{

while(true)

{

if(angle 0)

angle = angle + 360;

if(angle = 360)

angle = angle - 360;

else break;

}

this.angle = angle;

}

public int getAngle()

{

return angle;

}

public static void main(String[] Args)

{

JFrame f = new JFrame();

final MyPanel aPanel = new MyPanel();

f.add(aPanel);

f.setVisible(true);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(350, 350);

f.setLocation(300, 200);

Thread aThread = new Thread(){

public void run()

{

while(true)

{

try

{

aPanel.setAngle(aPanel.getAngle() + 1);//加一逆时针转,减一顺时针转

aPanel.repaint();

this.sleep(10);//此处可以调节转动速度

} catch (InterruptedException e)

{

e.printStackTrace();

}

}

}

};

aThread.start();

}

}

java怎么画一个圆弧(知道这个圆弧的起点、终点、中点和圆心角),说出具体的方法!求解答!

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

public class TestDrawArc extends JFrame{

MyCanvas1 cnv;

public TestDrawArc(){

super("半圆");

cnv = new MyCanvas1();

this.add(cnv);

this.setSize(500, 500);

this.setVisible(true);

}

public static void main(String[] args) {

new TestDrawArc();

}

}

class MyCanvas1 extends Canvas{

public MyCanvas1(){

super();

}

public void paint(Graphics g){

super.paint(g);

g.setColor(Color.red);

g.drawArc(50, 50, 300, 300, 0, 180);

}

}

drawArc有6个参数:

前面两个圆的外切矩形左上角的坐标点,中间两个是外切矩形的宽和高,倒数第二个是弧的起始角度,最后一个是弧的跨越角度。

java如何在界面中指定坐标画线

setColor:设置画笔的颜色。

drawLine:在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段。

drawRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形边框。

fillRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形区域。

drawRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形边框。

fillRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域。

drawOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓。注意,如果横纵半径的数值相等,此时椭圆就变成了圆形。

fillOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆区域。

drawArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的圆弧。

fillArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形。

setFont:设置画笔的字体。

drawString:在当前位置的横纵偏移距离处绘制文本。

此外,Graphics也支持几种简单的管理操作,包括平移画笔、擦除区域、裁剪画布等功能,对应的处理方法说明如下:

translate:平移画笔至坐标点(x,y)。

clearRect:清除某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。

clipRect:裁剪某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。该方法的执行效果与clearRect正好相反,clearRect方法清除了矩形内部的所有图案;而clipRect方法清除了矩形外部的所有图案,只留下矩形内部的图案。

绘制图案与字符串的过程与绘制图像一样,都是重写自定义控件的paint方法,在该方法中调用画笔对象的各种绘图方法。接下来按照之前的图像视图依样画瓢定义一个绘画视图DrawView,变动之处在于绘制控件的paint方法,并据此演示几种图案的实现效果。首先准备绘制一条黑色线段,线段的起点位于控件的左上角,终点位于控件的右下角,则相应的绘制方法示例如下:

1

2

3

g.setColor(Color.BLACK); // 设置画笔的颜色为黑色

// 在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段

g.drawLine(0, 0, getWidth(), getHeight());

主界面的代码比较简单,有关绘画视图的调用可参考如下的代码片段:

1

2

3

4

5

Panel panelCenter = new Panel(); // 创建中央面板

DrawView draw = new DrawView(); // 创建一个绘画视图

draw.setSize(360, 180); // 设置绘画视图的宽高

panelCenter.add(draw); // 在中央面板上添加绘画视图

frame.add(panelCenter, BorderLayout.CENTER); // 把中央面板添加到窗口的中间位置

运行修改后的测试代码,弹出的线段绘制窗口界面如下图所示。

接着绘制一个矩形边框,假设边框为红色,则对应的绘制方法如下所示:

1

2

3

g.setColor(Color.RED); // 设置画笔的颜色为红色

// 以坐标点(x,y)为左上角,绘制指定宽高的矩形边框

g.drawRect(10, 10, getWidth() - 20, getHeight() - 20);

同样运行测试界面代码,弹出的矩形绘制窗口界面如下图所示。

再绘制一个绿色的圆角矩形,但它是实心的,此时绘制过程应当调用fillRoundRect方法:

1

2

3

g.setColor(Color.GREEN); // 设置画笔的颜色为绿色

// 以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域

g.fillRoundRect(10, 10, getWidth() - 20, getHeight() - 20, 50, 50);

运行主界面的测试代码,弹出的圆角矩形绘制窗口如下图所示。

继续绘制一个蓝色的椭圆轮廓,注意它是空心的,此时绘制过程应当调用drawOval方法:

1

2

3

g.setColor(Color.BLUE); // 设置画笔的颜色为蓝色

// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓

g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);

运行主界面的测试代码,弹出的椭圆绘制窗口界面如下图所示。

还可以绘制一个橙色的扇形,所谓扇形是由某段圆弧连接两端的横纵半径组成,因此它相当于实心的圆弧,此时绘制过程应当调用dfillArc方法:

1

2

3

g.setColor(Color.ORANGE); // 设置画笔的颜色为橙色

// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形

g.fillArc(10, 10, getWidth() - 20, getHeight() - 20, 0, 90);

运行主界面的测试代码,弹出的扇形绘制窗口界面如下图所示。

最后使用画笔绘制几个文字,同时指定这段文字的颜色、字体以及大小,则对应的绘制方法如下所示:

1

2

3

g.setColor(Color.BLACK); // 设置画笔的颜色为黑色

g.setFont(new Font("大号粗体", Font.BOLD, 50)); // 设置画笔的字体

g.drawString("春天花会开", 50, 50); // 在当前位置的横纵偏移距离处绘制文本

运行主界面的测试代码,弹出的文字绘制窗口界面如下图所示。

java 改变线条粗细

import javax.swing.*;

import java.awt.*;

class DrawPanel extends JPanel{

private int x = 25;

private int y = 50;

public void paintComponent(Graphics g)

{

super.paintComponent(g);

int radius = 10;

Graphics2D g2d=(Graphics2D)g;

Stroke stroke=new BasicStroke(3.0f);//设置线宽为3.0

g2d.setStroke(stroke);

Font f = new Font("Times New Roman", Font.BOLD+Font.ITALIC, 30);

g2d.setFont(f);

g2d.drawString("2008 Beijing Olympic Game ", x, y);

g2d.setColor(new Color(255,0,0));

g2d.drawArc(35 , 65 , radius, radius, -90, 360);

g2d.setColor(new Color(36,56,242));

g2d.drawArc(85 , 65 , radius, radius, -90, 360);

g2d.setColor(new Color(49,222,35));

g2d.drawArc(10 , 105 , radius, radius, -90, 360);

g2d.setColor(new Color(240,245,33));

g2d.drawArc(60 , 105 , radius, radius, -90, 360);

g2d.setColor(new Color(0,0,0));

g2d.drawArc(110 , 105, radius, radius, -90, 360);

}

java的drawarc的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java的drawarc的信息别忘了在本站进行查找喔。