>  기사  >  Java  >  Java의 Graphics2D 클래스 기본 사용법 튜토리얼

Java의 Graphics2D 클래스 기본 사용법 튜토리얼

高洛峰
高洛峰원래의
2017-01-17 16:13:561255검색

Java 언어는 다양한 기본 기하학적 도형을 제공하는 Graphics 클래스를 기반으로 Graphics 클래스를 확장하여 더욱 강력한 2차원 그래픽 처리 기능을 갖고 좌표 변환, 색상 관리, 텍스트 레이아웃 기능을 제공하는 Graphics2D 클래스를 제공합니다. .보다 정확한 제어를 기다리고 있습니다.
도면 속성

Graphics2D는 그래픽의 상태 속성을 추가하거나 변경하는 여러 가지 방법을 정의합니다. 상태 속성을 설정 및 수정하고 변환, 회전, 크기 조정 또는 트리밍 변환 그래픽을 설정하고 채워진 그래픽의 색상 및 패턴을 설정하여 브러시 너비와 브러시 연결 방법을 지정할 수 있습니다. 그래픽 상태 속성은 특정 개체와 함께 저장됩니다.

1. 획 속성
획 속성은 선의 너비, 펜 스타일, 선분 연결 방식 또는 대시 패턴을 제어합니다. 이 속성을 설정하려면 먼저 BasicStroke 객체를 만든 다음 setStroke() 메서드를 호출하여 설정해야 합니다. BasicStroke 객체를 생성하는 방법은 다음과 같습니다.
BasicStroke(float w): 선 너비 w를 지정합니다.
BasicStroke(float w, int cap, int Join):
cap은 끝점입니다: CAP_BUTT(수정되지 않음), CAP_ROUND(반원형 끝), CAP_SQUARE(사각형 끝, 기본값).
Join은 JOIN_BEVEL(수정 없음), JOIN_MTTER(뾰족한 끝, 기본값), JOIN_ROUND(둥근 끝)의 두 선분 교차점에서 연결 방법을 정의합니다.

2. 페인트 속성
페인트 속성은 채우기 효과를 제어합니다. 먼저 다음 메소드를 호출하여 채우기 효과를 확인하고, setPaint() 메소드를 사용하여 설정합니다.
GradientPaint(float x1, float y1, Color c1, float x2, floot y2, Color c2): (x1, y1)에서 (x2, y2)까지, c1에서 c2까지의 색상 그라데이션입니다. 그 중 매개변수 c1과 c2는 색상 c1에서 색상 c2까지의 그라데이션 색상을 결정합니다. 매개변수 x1, y1, x2, y2는 그라데이션의 강도를 결정합니다. 즉, 지점 (x1, y1)에서 시작하여 지점 (x2, y2)까지 색상이 c1에서 c2로 변경됩니다.
GradientPaint(float x1, float y1, Color c1, float x2, float y2, Color c2, Boolean cyclo): 그라데이션이 끝점과 시작점의 색상이 되도록 하려면 cyclic을 다음으로 설정해야 합니다. 진실.

3. 변환 속성
변환 속성은 그래픽 변환, 스케일링, 베벨링과 같은 일반적인 변환 작업을 구현하는 데 사용됩니다. 먼저 AffineTransform 객체를 생성한 다음 setTransform() 메서드를 호출하여 변환 속성을 설정합니다. 마지막으로, 지정된 속성을 가진 Graphics2D 객체를 사용하여 그래픽이 그려집니다. AffineTransform 객체를 생성하는 방법은 다음과 같습니다.

getRotateinstrance(double theta): 세타 라디안을 회전합니다.

getRotateInstance(double theta,dioble x,double y): 회전 중심(x, y)을 기준으로 회전합니다.

getScaleInstance(double sx,double sy): x와 y 방향은 각각 sx와 sy의 비율에 따라 변환됩니다.

getTranslateInstance(double tx,double ty): 번역 변환.

getShearInstance(double shx,double Shy): 경사 변환, shx 및 Shy는 경사 각도를 지정합니다.

먼저 변환 속성 없이 AffineTransform 객체를 생성한 후 다음 방법을 사용하여 그래픽 변환, 회전 및 크기 조정 변환 속성을 지정할 수도 있습니다.

transelate(double dx,double dy): x축 방향으로 dx 픽셀만큼 그래픽을 이동합니다.

scale(double sx,double sy): 그래프의 크기는 x축 방향으로 sx배, 세로 방향으로 sy배로 조정됩니다.

rotate(double arc, double x, double y): 그래프는 점 (x, y)를 축 점으로 사용하고 호 라디안을 회전합니다.

예를 들어 AffineTransform 개체를 만듭니다.

AffineTransform trans = new AffineTransform();

AffineTransform 개체에 대한 점 회전 변환 속성을 지정합니다.

Trans.rotate(50.0*3.1415927/180.0,90,80);

그런 다음 g2d 개체에 대해 위의 회전 변환 함수를 설정합니다. of Graphics2D. "Brush":

Graphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);

마지막으로 그래픽 객체를 매개변수로 사용하여 변환 함수가 포함된 Graphics2D 객체의 draw() 메서드를 호출합니다. 예를 들어, 2차 곡선 개체 곡선이 있다고 가정하면 다음 코드는 위의 회전 함수와 함께 g2d 개체를 사용하여 이 2차 곡선 그리기를 구현합니다.

g2d.draw(curve)

4. 클립 속성은 클리핑 효과를 얻는 데 사용됩니다. 클리핑 속성을 설정하려면 setClip() 메서드를 호출하여 클리핑 영역의 모양을 결정할 수 있습니다. 여러 setClip() 작업이 연속적으로 수행되어 교차하는 클리핑 영역을 얻습니다.

5.composit 속성

composit 속성은 그래픽이 겹쳐지는 효과를 설정합니다. 먼저 AlphaComposite.getInstance(int rule, float alpha) 메소드를 사용하여 AlphaComposite 객체를 가져온 다음 setComposite() 메소드를 통해 혼합 효과를 설정합니다. 알파 값의 범위는 0.0f(완전 투명)부터 0.1f(완전 불투명)까지입니다.
Graphics2D 클래스의 그리기 방법

Graphics2D 클래스는 여전히 Graphics 클래스의 그리기 방법을 유지하면서 많은 새로운 방법을 추가합니다. 새로운 방법은 기하학적 모양(선분, 원 등)을 객체로 그립니다. java.awt.geom 패키지에 선언된 일련의 클래스는 다양한 본문 그래픽 객체를 생성하는 데 사용됩니다. 주로 다음을 포함합니다:

Line2D 선분 클래스, RoundRectangle2D 둥근 사각형 클래스, Ellipse2D 타원 클래스, Arc2D 호 클래스, QuadCurve2D 2차 곡선 클래스, CubicCurve2D 3차 곡선 클래스.

그래픽을 그리려면 Graphics2D 클래스의 새로운 메소드를 사용해야 합니다. 먼저, 다시 그리기 메소드인 PaintComponent() 또는 Paint()에서 매개변수 객체 g를 Graphics2D 객체에 강제로 적용한 다음, 위의 그래픽 클래스에서 제공하는 정적 메소드 Double()을 사용하여 마지막으로 그래픽 객체를 생성합니다. 매개변수로서의 그래픽 객체 이 그래픽을 그리려면 Graphics2D 객체의 draw() 메소드를 호출하십시오. 예를 들어, 다음 코드는 Graphics2D의 새로운 메소드를 사용하여 선분과 둥근 직사각형을 그립니다.

Graphics2D g2d = (Graphics2D)g;//将对象g类型从Graphics转换成Graphics2D
Line2D line = new Line2D.Double(30.0,30.0,340.0,30.0);
g2d.draw(line);
RoundRectangle2D rRect = new RoundRectangle2D.Double(13.0,30.0,100.0,70.0,40.0,20.0);
g2d.draw(rRect);

또한 먼저 java.awt.geom 패키지에서 제공하는 Shape 객체를 사용하고 다음을 사용하여 Shape 객체를 생성할 수도 있습니다. 단정밀도 부동 좌표 또는 배정밀도 이중 좌표를 선택한 다음 draw() 메서드를 사용하여 그립니다. 예를 들어, 다음 코드는 먼저 호 객체를 생성한 다음 호를 그립니다.


Shape arc = new Arc2D.Float(30,30,150,150,40,100,Arc2D.OPEN);
g2d.draw(arc)//绘制前面创建的图形对象arc

Graphics2D의 Geometry 클래스

Line 세그먼트

Line2D line = new Line2D.Double(2,3,200,300);//声明并创建线段对象
//起点是(2,3),终点是(200,300)

矩形

Rectangle2D rect = new Rectangle2D.Double(20,30,80,40);//声明并创建矩形对象,矩形的左上角是(20,30),宽是300,高是40

圆角矩形

RoundRectangle2D rectRound = new RoundRectangle2D.Double(20,30,130,100,18,15);
//左上角是(20,30),宽是130,高是100,圆角的长轴是18,短轴是15。

椭圆

Ellipse2D ellipse = new Ellipse2D.Double(20,30,100,50);
//左上角 (20,30),宽是100,高是50

圆弧

Arc2D arc1 = new Arc2D.Double(8,30,85,60,5,90,Arc2D.OPEN);
//外接矩形的左上角(10,30),宽85,高60,起始角是5度,终止角是90度
Arc2D arc2 = new Arc2D.Double(20,65,90,70,0,180,Arc2D.CHORD);
Arc2D arc3 = new Arc2D.Double(40,110,50,90,0,270,Arc2D.PIE);

参数Arc2D.OPEN、Arc2D.CHORD、Arc2D.PIE分别表示圆弧是开弧、弓弧和饼弧。
二次曲线
二次曲线用二阶多项式表示:

y(x)=ax2+bx+c

一条二次曲线需要三个点确定:始点、控制点和终点。

QuadCurve2D curve1 = new QuadCurver2D.Double(20,10,90,65,55,115);
QuadCurve2D curve2 = new QuadCurver2D.Double(20,10,15,63,55,115);
QuadCurve2D curve3 = new QuadCurver2D.Double(20,10,54,64,55,115);

方法Double()中的6个参数分别是二次曲线的始点、控制点和终点。以上3条二次曲线的开始点和终点分别相同。
三次曲线
三次曲线用三阶多项式表示:

y(x)=ax3+bx2+cx+d

一条三次曲线需要四个点确定:始点、两个控制点和终点。

CubicCurve2D curve1 = new CubicCurve2D.Double(12,30,50,75,15,15,115,93);
CubicCurve2D curve2 = new CubicCurve2D.Double(12,30,15,70,20,25,35,94);
CubicCurve2D curve3 = new CubicCurve2D.Double(12,30,50,75,20,95,95,95);

方法Double()中的8个参数分别是三次曲线的始点、两个控制点和终点。

一般的方程曲线的绘制过程用一个循环控制。通过循环产生自变量的值,按照方程计算出函数值,再作必要的坐标转换:原点定位的平移变换,图像缩小或放大的缩放变换,得到曲线的图像点,并绘制这个点。以绘制以下曲线方程为例:

Y=sin(x)+cos(x),x

绘制的部分代码可以写成如下:

double x0,y0,x1,y1,x2,y2,scale;
x0=100;y0=80;
scale =20.0;
for(x1=-3.1415926d;x1<=2*3.1415926d;x1+=0.01d){
  y1=Math.sin(x1)+Math.cos(x1);
  x2=x0+x1*scale;y2=y0+y1*scale;//(x2,y2)是图像点
  g.fillOval((int)x2,(int)y2,1,1);//画一个圆点作为图像点
}

更多Java中的Graphics2D类基本使用教程相关文章请关注PHP中文网!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.