第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JButton 圖像渲染不好

JButton 圖像渲染不好

Smart貓小萌 2022-12-15 17:02:18
我正在使用 Swing 制作一個(gè)應(yīng)用程序,我想在主面板上添加一個(gè)帶有十字圖標(biāo)的按鈕。但是當(dāng)我在上面繪制圖像時(shí),圖像呈現(xiàn)得很奇怪。我已經(jīng)嘗試了幾種方法,例如在應(yīng)用程序外部調(diào)整圖像大小,并且交叉是用 IllustratorCC 制作的,所以我認(rèn)為問題不是源圖像的質(zhì)量。import javax.imageio.*;import javax.swing.*;import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;public class ImageRenderingBadly extends JPanel{    BufferedImage cross;    public ImageRenderingBadly()    {        try {            URL url = new URL("https://i.imgur.com/cWGntek.png");            cross = ImageIO.read(url);        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void paintComponent(Graphics g)    {        g.drawImage(cross,0,0,null);    }    public static void main(String[] args)    {        JFrame frame = new JFrame();        frame.setSize(new Dimension(200,200));        frame.setBackground(new Color(0));        ImageRenderingBadly panel = new ImageRenderingBadly();        frame.setContentPane(panel);        frame.setVisible(true);    }}
查看完整描述

2 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

這個(gè)對(duì)我有用:


注意,我用圖片創(chuàng)建了兩張圖片和圖標(biāo),一張是按鈕的,一張是按下狀態(tài)的,表示已經(jīng)按下了。


import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.net.URL;


import javax.imageio.ImageIO;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.JPanel;


public class XButtonTest {

    private static final String X_IMG_PATH = "https://i.imgur.com/cWGntek.png";


    public static void main(String[] args) {

        try {

            URL xImgUrl = new URL(X_IMG_PATH);

            BufferedImage xImage = ImageIO.read(xImgUrl);

            int w = xImage.getWidth();

            int h = xImage.getHeight();

            BufferedImage pressedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

            Graphics2D g2 = pressedImg.createGraphics();

            g2.setColor(Color.LIGHT_GRAY);

            g2.fillRect(0, 0, w, h);

            g2.drawImage(xImage, 0, 0, null);

            g2.dispose();


            Icon icon = new ImageIcon(xImage);

            Icon pressedIcon = new ImageIcon(pressedImg);


            JButton button = new JButton(icon);

            button.setPressedIcon(pressedIcon);

            button.setBorderPainted(false);

            button.setFocusPainted(false);

            button.setContentAreaFilled(false);

            JPanel panel = new JPanel();

            panel.add(button);

            JOptionPane.showMessageDialog(null, panel, "Test", JOptionPane.PLAIN_MESSAGE);


        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-15
?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

我發(fā)現(xiàn)“drawImage”渲染的圖像很糟糕,這就是我認(rèn)為的問題:



public class Panel extends JPanel

{

    BufferedImage image;


    public Panel() {

        super();


        try {

            image = ImageIO.read(new File("images/BMW-TA.jpg"));

        } catch (IOException e) {

            e.printStackTrace();

        }


    }


    @Override

    public void paintComponent(Graphics g)

    {

        super.paintComponent(g);

        g.drawImage(image, 0, 0, null);

    }

}


資料來源:https ://i.imgur.com/ebr17CV.jpg


渲染:https ://i.imgur.com/Z01I7mn.png


找到解決方案


在 paintComponent 中使用抗鋸齒:


@Override

    public void paintComponent(Graphics g)

    {

        Graphics2D g2 = (Graphics2D)g;

        RenderingHints rh = new RenderingHints(

                RenderingHints.KEY_RENDERING,

                RenderingHints.VALUE_RENDER_QUALITY);

        g2.setRenderingHints(rh);

        g2.drawImage(cross,0,0,null);

    }


查看完整回答
反對(duì) 回復(fù) 2022-12-15
  • 2 回答
  • 0 關(guān)注
  • 98 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)