web-dev-qa-db-ja.com

Java2D:線幅を増やす

Line2Dの幅を増やしたい。私はそれを行う方法を見つけることができませんでした。この目的のために実際に小さな長方形を作成する必要がありますか?

75
Boolean

setStrokeを使用して、Graphics2Dオブジェクトのストロークを設定する必要があります。

http://www.Java2s.com の例は、いくつかのコード例を示しています。

次のコードは、以下の画像を生成します。

import Java.awt.*;
import Java.awt.geom.Line2D;
import javax.swing.*;

public class FrameTest {
    public static void main(String[] args) {
        JFrame jf = new JFrame("Demo");
        Container cp = jf.getContentPane();
        cp.add(new JComponent() {
            public void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g;
                g2.setStroke(new BasicStroke(10));
                g2.draw(new Line2D.Float(30, 20, 80, 90));
            }
        });
        jf.setSize(300, 200);
        jf.setVisible(true);
    }
}

enter image description here

setStrokeメソッドはGraphicsオブジェクトでは使用できないことに注意してください。Graphics2Dオブジェクトにキャストする必要があります。)


この投稿は記事として書き直されました here

156
aioobe

Strokeとは:

BasicStrokeクラスは、このBasicStrokeに設定されたStroke属性を持つGraphics2Dオブジェクトで描画されるグラフィックスプリミティブのアウトラインの描画属性の基本セットを定義します。

https://docs.Oracle.com/javase/7/docs/api/Java/awt/BasicStroke.html

Strokeの設定に注意してください。

Graphics2D g2 = (Graphics2D) g;
g2.setStroke(new BasicStroke(10));

BasicStroke(float width):であるため、線幅を設定しています

指定された線幅と、キャップおよび結合スタイルのデフォルト値を使用して、ソリッドBasicStrokeを構築します。

また、Graphics2D.drawLine(int x1, int y1, int x2, int y2)Graphics2D.drawRect(int x, int y, int width, int height)などの他のメソッドにも影響します。

Strokeオブジェクトによって返されるアウトラインShapeを使用するGraphics2Dインターフェイスのメソッドには、drawと、drawLine、drawRect、drawRoundRect、drawOval、drawArc、drawPolyline、drawPolygonなど、そのメソッドに関して実装されているその他のメソッドが含まれます。

1
ZhaoGang