java DrawString 旋转问题

public void rotateText(Graphics g, String s, double angle, int x, int y)
{
Graphics2D g2d = (Graphics2D)g;

// Move the origin to the (x,y)
g2d.translate(x, y);
// Rotate the angle
g2d.rotate(Math.PI*(angle/-180));
// Draw text
g2d.drawString(s, 0, 0);
//Restore moving and rotating
g2d.rotate(-Math.PI*(angle/-180));
g2d.translate(-x,-y);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现倾斜水印铺满整张图的方法如下: 1. 首先,将要添加水印的图片读入内存,可以使用Java自带的ImageIO类实现。 2. 创建一个Graphics2D对象,将要添加水印的图片作为参数传入,可以使用BufferedImage类的createGraphics方法实现。 3. 设置水印的字体、颜色、透明度等属性,可以使用Graphics2D对象的setFont、setColor、setComposite等方法实现。 4. 根据水印的文字内容,使用Graphics2D对象的drawString方法在图片上绘制水印。 5. 对绘制的水印进行旋转、平移等操作,可以使用Graphics2D对象的rotate、translate等方法实现。 6. 将添加了水印的图片输出到文件或输出流中,可以使用ImageIO类的write方法实现。 下面是一个示例代码,实现了在图片上添加倾斜水印并铺满整张图的功能: ```java import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Watermark { public static void main(String[] args) { try { // 读取图片 BufferedImage image = ImageIO.read(new File("input.jpg")); // 创建Graphics2D对象 Graphics2D g2d = image.createGraphics(); // 设置字体、颜色、透明度等属性 Font font = new Font("微软雅黑", Font.BOLD, 50); g2d.setFont(font); g2d.setColor(new Color(255, 255, 255, 100)); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); // 绘制水印 String watermark = "Watermark"; FontMetrics fm = g2d.getFontMetrics(); int width = fm.stringWidth(watermark); int height = fm.getHeight(); int x, y; for (x = -image.getWidth(); x < image.getWidth(); x += width) { for (y = -image.getHeight(); y < image.getHeight(); y += height) { g2d.drawString(watermark, x, y); } } // 旋转水印 AffineTransform at = new AffineTransform(); at.rotate(Math.toRadians(45), image.getWidth() / 2, image.getHeight() / 2); g2d.setTransform(at); // 输出图片 ImageIO.write(image, "jpg", new File("output.jpg")); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意事项: 1. 水印的透明度应该适当调整,以免影响图片的可读性。 2. 旋转水印时,需要注意旋转中心的位置,应该放在图片的中心位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值