学习笔记5

告警展示3

对于存在告警信息的网元渲染,可以添加文字或图标,以加强其渲染效果或突出特例,在Twaver中可以通过添加装饰图标来实现相应功能。

Twaver中提供一组预定义的图标去展示网元状态,这些图标被IconAttchmentHolder管理,可以很容易定制新的图标添加到网元对象上。

Twaver文档中为展示相应功能,提供了一个例子:

 

//定义一个附加图标类
//必须定义成静态的公共类

public static class MyIconAttachment extends IconAttachment{
  public MyIconAttachment(String name, ElementUI ui) {
    super(name, ui, TWaverUtil.getImageIcon("myIcon.png"));
  }
}
private void step8() {
  String iconName="document";

//注册附加图标
  TUIManager.registerAttachment(iconName, MyIconAttachment.class);
  //添加附加图标

  Element element = box.getElementByID("A");
  element.addAttachment(iconName);
}

 

通过jdk也可以实现相似功能,其代码及说明如下:

  /**
  * 获取按照输入长度和宽度设定的图片
  * @param image 源图片
  * @param width 宽度
  * @param hight 高度
  * @return
  */
 public static ImageIcon resizeIcon(ImageIcon image, int width, int hight) {
  if (image != null && image.getIconWidth() != -1
    && image.getIconHeight() != -1) {
   BufferedImage bi = new BufferedImage(image.getIconWidth(), image
     .getIconHeight(), BufferedImage.TYPE_INT_ARGB);
   Graphics2D biContext = bi.createGraphics();
   biContext.drawImage(image.getImage(), 0, 0, null);
   Image scaledImage = bi.getScaledInstance(width, hight,
     Image.SCALE_DEFAULT);
   return new ImageIcon(scaledImage);
  }
  return null;
 }

 

说明:本方法主要是将图片生成符合要求的图标文件,利用图片生成一个BufferedImage对象,然后利用getScaledInstance()创建一个新的图标文件文件。

 

getScaledInstance()方法:创建一个指定大小的新图像,此方法被调用时Image.SCALE_DEFAULT被提供,这个提示来自于java.awt.Image类:

Image.SCALE_DEFAULT

Image.SCALE_REPLICATE

Image.SCALE_FAST

Image.SCALE_SMOOTH

Image.SCALE_AREA_AVERAGING

这些提示分为两类:DEFAULTREPLICATEFASTSunJava实现上完全相等,它们使用与drawImage()NEAREST_NEIGHBOR提示相同的方式。AREA_AVERAGINGSMOOTH方式在SunJava实现上完全相等,它们与getScaledInstance()的其他提示或drawImage()BILINEARBICUBIC相比,通常产生的结果质量更高,尤其在大比例缩小一个图像的时候。

<!--EndFragment-->

 

/**
  * 将一个图片设置到另一个图片里面,也可以理解为图片水印处理
  * @param pressImg 水印图片
  * @param targetImg 目标图片
  * @param x 修正值 默认在中间
  * @param y 修正值 默认在中间
  * @param alpha 透明度
  */

 public static ImageIcon processImage(Image pressImg, Image targetImg,
   int x, int y, float alpha) {
  if (pressImg != null && targetImg != null) {
   int wideth = targetImg.getWidth(null);
   int height = targetImg.getHeight(null);
   BufferedImage image = new BufferedImage(wideth, height,
     BufferedImage.TYPE_INT_ARGB);
   Graphics2D g = image.createGraphics();
   g.drawImage(targetImg, 0, 0, wideth, height, null);
   int pressWideth = pressImg.getWidth(null);
   int pressHeight = pressImg.getHeight(null);
 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
     alpha));
   g.drawImage(pressImg, x, y, pressWideth, pressHeight, null);
   g.dispose();
   return new ImageIcon(image);
  }
  return null;
 }

说明:本方法主要是通过图片合成技术生成一个新的图片对象。

 

具体示例显示:

 

 

与添加图标原理相似,也可以添加文字标注:

 

 /**
  * 在图片中添加文字,可以利用透明度属性来控制文字的显示程度,即可以理解为设置文字水印 若没有透明度要求,可以直接设置alpha为1.0f
  * @param text  要显示的文字
  * @param targetImg   目标图片
  * @param fontName  字体名称
  * @param fontStyle  字体样式
  * @param color  字体颜色
  * @param fontSize  字体大小
  * @param x x坐标位置
  * @param y y坐标位置
  * @param alpha 透明度,一般设置为1.0f
  */

 public  ImageIcon processImageWithText(String text, Image srcImage,
   String fontName, int fontStyle, Color color, int fontSize, int x,
   int y, float alpha) {
  if (srcImage != null && srcImage.getWidth(null) != -1
    && srcImage.getHeight(null) != -1) {
   int width = srcImage.getWidth(null);
   int height = srcImage.getHeight(null);
   BufferedImage image = new BufferedImage(width, height,
     BufferedImage.TYPE_INT_ARGB);
   Graphics2D g = image.createGraphics();
   g.drawImage(srcImage, 0, 0, width, height, null);
   g.setColor(color);
   g.setFont(new Font(fontName, fontStyle, fontSize));
         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,alpha));
   g.drawString(text, x, y);
   g.dispose();
   return new ImageIcon(image);
  }
  return null;
 }

具体示例显示:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值