java的drawarc的简单介绍
本篇文章给大家谈谈java的drawarc,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、用JAVA编写圆
- 2、DrawArc()方法如何使用
- 3、java 的旋转 太极图 问题....
- 4、java怎么画一个圆弧(知道这个圆弧的起点、终点、中点和圆心角),说出具体的方法!求解答!
- 5、java如何在界面中指定坐标画线
- 6、java 改变线条粗细
用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的信息别忘了在本站进行查找喔。