it-swarm.com.de

Zeichne die Stärke des Rechtecks

Ist es möglich, ein Rechteck mit einer bestimmten Randstärke auf einfache Weise zu zeichnen?

20
JPC

Wenn Sie ein Objekt Graphics2D zeichnen, können Sie die setStroke()-Methode verwenden:

Graphics2D g2;
double thickness = 2;
Stroke oldStroke = g2.getStroke();
g2.setStroke(new BasicStroke(thickness));
g2.drawRect(x, y, width, height);
g2.setStroke(oldStroke);

Wenn dies für eine Swing-Komponente durchgeführt wird und Sie ein Graphics-Objekt übergeben, können Sie es auf einen Graphics2D-Downcast übertragen.

Graphics2D g2 = (Graphics2D) g;
34
jjnguy

Gehen Sie dazu wie folgt vor: Rand mit farbiger Linie mit Stärke 5.

Border linebor = BorderFactory.createLineBorder(new Color(0xAD85FF), 5);
2
Hatto
**Tested code with buffered image with different thickness values**:

Graphics2D g = bufferedImage.createGraphics();

int height = //image height

int width = //image height

int borderWidth = //border thickness

int borderControl = 1;

//set border color

g.setColor(Color.BLACK);

//set border thickness

g.setStroke(new BasicStroke(borderWidth));

//to fix issue for even numbers

if(borderWidth%2 == 0){

borderControl = 0;

}

g.drawLine(0, 0, 0, height);

g.drawLine(0, 0, width, 0);

g.drawLine(0, height – borderControl, width, height – borderControl);

g.drawLine(width – borderControl, height – borderControl, width – borderControl, 0);
0
Mohit