簡體   English   中英

如何在 Java 中制作圓形圖像標簽?

[英]How to make Circle image Label in Java?

如何在 Java 中制作圓形圖像標簽?

我想制作圓形圖像標簽但我不能這樣做..嘿伙計們幫幫我..TT

我嘗試制作圓形面板以添加圖像圖標,但沒有奏效。

請幫幫我...

我認為你應該改變你的策略,而不是嘗試修改組件的輸出,而是修改輸入......

在此處輸入圖像描述

所以這一切所做的就是將圓形(基於 alpha 的)蒙版應用於另一個圖像

    BufferedImage master = ImageIO.read(new File("/Volumes/Disk02/Dropbox/MegaTokyo/thumnails/megatokyo_omnibus_1_3_cover_by_fredrin-d4oupef.jpg"));

    int diameter = Math.min(master.getWidth(), master.getHeight());
    BufferedImage mask = new BufferedImage(master.getWidth(), master.getHeight(), BufferedImage.TYPE_INT_ARGB);

    Graphics2D g2d = mask.createGraphics();
    applyQualityRenderingHints(g2d);
    g2d.fillOval(0, 0, diameter - 1, diameter - 1);
    g2d.dispose();

    BufferedImage masked = new BufferedImage(diameter, diameter, BufferedImage.TYPE_INT_ARGB);
    g2d = masked.createGraphics();
    applyQualityRenderingHints(g2d);
    int x = (diameter - master.getWidth()) / 2;
    int y = (diameter - master.getHeight()) / 2;
    g2d.drawImage(master, x, y, null);
    g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_IN));
    g2d.drawImage(mask, 0, 0, null);
    g2d.dispose();

    JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(masked)));

這樣做的好處是您可以獲得軟剪裁( setClip不提供),並且不會弄亂組件的現有剪裁形狀

applyQualityRenderingHints ...

public static void applyQualityRenderingHints(Graphics2D g2d) {

    g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
    g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);

}

轉到博客 NiceApplication1.BlogSpot.Com,並下載新的 Nice Application 1 Home Stupendous,然后解壓后進入 dist 文件夾並打開 Java Jar Nice Application 1,並獲取 jar Nice_Application_1_Files,並僅將您的方法轉換為一些節省空間的線條。

jar 后僅添加以下方法以及您的文件位置和調用方法。

導入 Nice_Application_1.Icon;

private void Addicon() 拋出 java.lang.NullPointerException, IOException {

    Icon test = new Icon("C:\\Image.jpg");

    String nice = test.icon();

    BufferedImage Appli1 = test.Application1;

    jToggleButton0.setIcon(new ImageIcon(Appli1));

}

//圓形圖標,您可以使用上述方法。

上面的例子,如果想在彈出窗口中使用 Jbutton,請鍵入 JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(Appli1)));

下載jar后,還可以獲得更多優勢。

您可以使用Area類來創建剪輯區域:

BufferedImage image = ImageIO.read(new File("..."));
Area clip = new Area( new Rectangle(0, 0, image.getWidth(), image.getHeight()) );
Area oval = new Area( new Ellipse2D.Double(0, 0, image.getWidth() - 1, image.getHeight() - 1) );
clip.subtract( oval );
Graphics g2d = image.createGraphics();
g2d.setClip( clip );
g2d.setColor( Color.BLACK );
g2d.fillRect(0, 0, image.getWidth(), image.getHeight());
JOptionPane.showMessageDialog(null, new JLabel(new ImageIcon(image)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM