日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

手电筒java_Java鼠标“手电筒”效果如何?

發(fā)布時間:2024/1/23 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手电筒java_Java鼠标“手电筒”效果如何? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所以你已經(jīng)確定了基本要求.

>您需要一個鼠標(biāo)監(jiān)聽器來監(jiān)控鼠標(biāo)的移動,這樣您就可以更新聚光燈的位置.閱讀how to write a mouse listener閱讀

>您需要在圖像上渲染聚光燈效果

以下示例基本上使用RadialGradientPaint在圖像上繪制“聚光燈”.它使用MouseMoitionListener監(jiān)視鼠標(biāo)的位置,并在您前進(jìn)時更新聚光燈.

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.EventQueue;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Paint;

import java.awt.Point;

import java.awt.RadialGradientPaint;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

public class MouseCover {

public static void main(String[] args) {

new MouseCover();

}

public MouseCover() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JFrame frame = new JFrame("Testing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

frame.add(new TestPane());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

});

}

public static class TestPane extends JPanel {

public static final int RADIUS = 200;

private Point mousePoint = null;

private BufferedImage background;

public TestPane() {

MouseAdapter mouseHandler = new MouseAdapter() {

@Override

public void mouseMoved(MouseEvent e) {

mousePoint = e.getPoint();

repaint();

}

@Override

public void mouseExited(MouseEvent e) {

mousePoint = null;

repaint();

}

};

addMouseMotionListener(mouseHandler);

addMouseListener(mouseHandler);

try {

background = ImageIO.read(...);

} catch (IOException ex) {

ex.printStackTrace();

}

}

@Override

public Dimension getPreferredSize() {

return background == null ? new Dimension(200, 200) : new Dimension(background.getWidth(), background.getHeight());

}

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2d = (Graphics2D) g.create();

if (background != null) {

int x = (getWidth() - background.getWidth()) / 2;

int y = (getHeight() - background.getHeight()) / 2;

g2d.drawImage(background, x, y, this);

}

Paint paint = Color.BLACK;

if (mousePoint != null) {

paint = new RadialGradientPaint(

mousePoint,

RADIUS,

new float[]{0, 1f},

new Color[]{new Color(0, 0, 0, 0), new Color(0, 0, 0, 255)});

}

g2d.setPaint(paint);

g2d.fillRect(0, 0, getWidth(), getHeight());

g2d.dispose();

}

}

}

總結(jié)

以上是生活随笔為你收集整理的手电筒java_Java鼠标“手电筒”效果如何?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。