java绘图drawString位置的确定
时间: 2024-03-21 14:40:42 浏览: 15
在Java中,可以使用Graphics类的drawString方法来绘制字符串。该方法有三个参数:要绘制的字符串、字符串左上角的x坐标和y坐标。可以使用FontMetrics类来获取字符串的宽度和高度,然后根据需要进行调整,以确定字符串的位置。例如,要将字符串居中绘制在屏幕上,可以使用以下代码:
```
String text = "Hello, world!";
Font font = new Font("Arial", Font.PLAIN, 24);
FontMetrics metrics = g.getFontMetrics(font);
int x = (getWidth() - metrics.stringWidth(text)) / 2;
int y = ((getHeight() - metrics.getHeight()) / 2) + metrics.getAscent();
g.setFont(font);
g.drawString(text, x, y);
```
其中,g是一个Graphics对象,getWidth()和getHeight()方法用于获取屏幕的宽度和高度,getAscent()方法用于获取字符串的基线位置。这段代码将字符串居中绘制在屏幕上,并使用Arial字体和24号字体大小进行绘制。
相关问题
java graphics绘图 drawString文字发光 代码
要让文字发光,可以使用 Java Graphics2D 的阴影效果来实现。以下是一个示例代码:
```java
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TextGlowExample extends JPanel {
private static final long serialVersionUID = 1L;
private String text = "Hello, World!";
private Font font = new Font("Arial", Font.BOLD, 50);
private Color color = Color.YELLOW;
private int glowSize = 10;
public TextGlowExample() {
setPreferredSize(getPreferredSize());
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// 设置字体和颜色
g2d.setFont(font);
g2d.setColor(color);
// 计算文字的大小和位置
TextLayout textLayout = new TextLayout(text, font, g2d.getFontRenderContext());
Rectangle2D bounds = textLayout.getBounds();
int x = getWidth() / 2 - (int) bounds.getWidth() / 2;
int y = getHeight() / 2 + (int) bounds.getHeight() / 2;
// 开启抗锯齿和阴影效果
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
// 绘制文字的阴影
g2d.setColor(Color.WHITE);
for (int i = 0; i < glowSize; i++) {
g2d.setStroke(new java.awt.BasicStroke((float) (glowSize - i)));
textLayout.draw(g2d, x, y + i);
}
// 绘制文字
g2d.setColor(color);
g2d.setStroke(new java.awt.BasicStroke(1f));
textLayout.draw(g2d, x, y);
}
@Override
public java.awt.Dimension getPreferredSize() {
return new java.awt.Dimension(300, 200);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Text Glow Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new TextGlowExample());
frame.pack();
frame.setVisible(true);
}
}
```
在上面的代码中,我们使用了 `TextLayout` 类来计算文字的大小和位置,并使用了 `RenderingHints` 来开启抗锯齿和阴影效果。在绘制文字时,我们首先绘制了文字的阴影,然后再绘制文字本身,从而实现了发光的效果。
java中drawstring设置字体
在Java中,我们可以使用Graphics类的drawString方法来绘制字符串,同时可以使用Font类设置字体。以下是一个简单的例子:
```
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawStringExample extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Font font = new Font("Arial", Font.BOLD, 20);
g.setFont(font);
g.drawString("Hello, World!", 50, 50);
}
public static void main(String[] args) {
JFrame frame = new JFrame("DrawString Example");
frame.add(new DrawStringExample());
frame.setSize(300, 200);
frame.setVisible(true);
}
}
```
在上面的例子中,我们使用Font类创建了一个名为Arial、粗体、大小为20的字体,并使用Graphics类的setFont方法将这个字体设置为绘制字符串时使用的字体。接着,我们使用Graphics类的drawString方法在(50,50)位置绘制了一段字符串"Hello, World!"。