package Magnifier;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Magnifier extends JFrame
{
private Container container = getContentPane();
private int setCoordinateX;
private int setCoordinateY;
private int absoluteCoordinateX;
private int absoluteCoordinateY;
private int relativeCoordinateXWhenMousePressed;
private int relativeCoordinateYWhenMousePressed;
//标记鼠标是否按下。如果按下则为true,否则为false
private boolean mousePressedNow;
// 放大镜尺寸
private int magnifierSize = 200;
//放大镜内容面板
private MagnifierPanel magnifierPanel = new MagnifierPanel(magnifierSize);
//这个窗体就是放大镜 你可以自己更改这个窗体..
public Magnifier()
{
setUndecorated(true); // 这个就是窗口的边缘 false的话就失效果了
setResizable(false);
container.add(magnifierPanel);
addMouseListener(new MouseFunctions());
addMouseMotionListener(new MouseMotionFunctions());
updateSize(magnifierSize);
this.setVisible(true);
}
public static void main(String arg[])
{
// JFrame
Magnifier magnifier = new Magnifier();
magnifier.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void updateSize(int magnifierSize)
{
magnifierPanel.setMagnifierSize(magnifierSize + 100);
setSize(magnifierSize + 100, magnifierSize + 100);
validate();
}
private class MouseFunctions extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
if (e.getClickCount() == 1)
{// 如果鼠标左键点了一下,说明按住了窗体
mousePressedNow = true;
relativeCoordinateXWhenMousePressed = e.getX();
relativeCoordinateYWhenMousePressed = e.getY();
}
}
public void mouseReleased(MouseEvent e)
{
mousePressedNow = false;
}
}
private class MouseMotionFunctions extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
if (mousePressedNow == true)
{// 如果此时鼠标按下了,说明在拖拽窗体
absoluteCoordinateX = Magnifier.this
.getLocationOnScreen().x
+ e.getX();
absoluteCoordinateY = Magnifier.this
.getLocationOnScreen().y
+ e.getY();
setCoordinateX = absoluteCoordinateX
- relativeCoordinateXWhenMousePressed;
setCoordinateY = absoluteCoordinateY
- relativeCoordinateYWhenMousePressed;
magnifierPanel.setMagnifierLocation(setCoordinateX,
setCoordinateY);
setLocation(setCoordinateX, setCoordinateY);
}
}
}
}
class MagnifierPanel extends JPanel
{
private Image screenImage;
private int magnifierSize;
private int locationX;
private int locationY;
private Robot robot;
public MagnifierPanel(int magnifierSize)
{
try
{
robot = new Robot();
}
catch (AWTException e){
}
screenImage = robot.createScreenCapture(new Rectangle(0, 0, Toolkit
.getDefaultToolkit().getScreenSize().width, Toolkit
.getDefaultToolkit().getScreenSize().height));
this.magnifierSize = magnifierSize;
}
public void setMagnifierLocation(int locationX, int locationY)
{
//X坐标
this.locationX = locationX;
//Y坐标
this.locationY = locationY;
repaint(); // 注意重画控件
}
public void setMagnifierSize(int magnifierSize)
{
this.magnifierSize = magnifierSize;
}
public void paintComponent(Graphics g)
{
super.paintComponent((Graphics2D) g);
// 关键处理代码
g.drawImage(
screenImage, // 要画的图片
0, // 目标矩形的第一个角的x坐标
0, // 目标矩形的第一个角的y坐标
magnifierSize, // 目标矩形的第二个角的x坐标
magnifierSize, // 目标矩形的第二个角的y坐标
locationX + (magnifierSize / 4), // 源矩形的第一个角的x坐标
locationY + (magnifierSize / 4), // 源矩形的第一个角的y坐标
locationX + (magnifierSize / 4 * 3), // 源矩形的第二个角的x坐标
locationY + (magnifierSize / 4 * 3), // 源矩形的第二个角的y坐标
this
);
}
}相关推荐
QMT与通达信代码实战:从预警到交易的自动化实现
本文详细介绍了如何利用QMT量化交易平台与通达信软件实现从预警到交易的全自动化。通过读取通达信预警生成的板块文件,QMT策略可自动执行买卖指令,有效解决手动交易滞后问题。文章提供了完整的代码框架、核心原理拆解及实盘注意事项,帮助投资者构建高效、纪律性的自动化交易系统。
java swing 截图 放大镜
【代码】java swing 截图 放大镜。
Qt加载百度地图详细流程(附带报错解决方法)
一篇文章看懂Qt如何加载出百度地图......
基于Swing 实现放大镜效果
一:概述 本文代码在JDK6u20版本调试通过,通过对像素的抓取处理和利用TexturePaint对BufferedImage对象的支持 从而实现对任何JComponent组件的放大镜效果。 二:前期准备工作 1.将传入的JComponent对象转换为BufferedImage对象做为源图像,有下面代码完成,关 键步骤在于从BufferedI...
Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南
本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。
课题申报新手入门必备指南!利用AI辅助搞定 6大关键部分,高效提升申报成功率(附AI提示词)
以下是我(或团队)与本课题相关的已有基础:【如:承担过的公开课、校本教研活动、教学改革实践、课程建设、区级/校级课题、教学反思积累等】请你完成以下任务:1)判断哪些内容与本课题的研究目标和内容具有直接或间接关联;以下是我当前的研究设想(可能比较笼统):【填写你的研究想法 / 教学困惑 / 初步设想】,请你帮我完成以下任务:1)先判断该设想中隐含的核心研究问题是什么;以下是我目前拟定的研究目标,请你从课题评审视角进行校正:【逐条粘贴你已有的研究目标】,请你帮我:1)判断每个目标是否具体、清晰、可评估;
Java:实现屏幕放大镜(附带源码)
Java:实现屏幕放大镜(附带源码)
YOLO11改进策略【独家融合改进】| EfficientViMBlock + LGAG + DySample
通过学习采样来学习上采样DySample。
java放大镜_Java写的屏幕放大镜
/***文件名:Magnifier.java*OS:GNU/LinuxUbuntu6.10*IDE:eclipse3.2*JDK版本:1.6.0*版本:0.1*作者:88250*邮箱&MSN:DL88250@gmail.com*QQ:845765*/importjava.awt.*;importjava.awt.event.*;importjavax.swing...
C# USB通信实现
在C#中,我们可以利用.NET框架提供的类库和API来实现与USB设备的通信。本文将介绍如何使用C#进行USB通信,并提供相应的代码示例。以上就是使用C#进行USB通信的基本过程。通过以上代码示例,你可以实现与USB设备的简单通信,具体的实现方式和细节根据你的实际需求进行调整和扩展。命名空间,该命名空间包含了与串口通信相关的类和方法。选择需要通信的USB设备,然后使用。步骤二:获取可用的USB设备列表。首先,在你的C#项目中引入。步骤三:打开USB端口。步骤六:关闭USB端口。步骤一:引入命名空间。
微信小程序 - 引入并使用 Fly.js 请求库(超级详细的教程及运行示例)提供 Fly.js 源码源文件下载,贴心的配置示例及注释,优雅快速的发起 http 网络请求
fly.js请求库官方教程文档,微信小程序封装fly.js请求,在小程序/mpvue中使用flyio发起网络请求的方法,微信小程序中如何使用flyio封装网络请求,微信小程序中如何使用flyio封装网络请求,最好的教程,fly最好的文档教程,微信小程序使用fly接口请求框架,引入fly.js报错,微信小程序中如何使用flyio封装网络请求,微信小程序引入Fly.js请求库,如何在fly中配置请求/响应拦截器,如何在微信小程序中优雅地发送异步请求,请求/响应拦截器,微信小程序-引入并使用F
Java写的屏幕放大镜[zz]
导读: 写了个放大镜,初步对Java的GUI编程有了点概念:-) /** * 文件名:Magnifier.java * OS:GNU/Linux Ubuntu 6.10 * IDE:eclipse 3.2 * JDK 版本: 1.6.0 * 版本:0.1 * 作者:88250 * 邮箱&MSN:DL88250@gmail.com * QQ: 845765 */ import java.awt.*
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
Java应用---Design for Coder(集截屏,取色,放大,画图)为一体
记得以前闲来无事的时候做过一个java小应用,将截屏,取色,放大镜,画图功能集成在一起的 小应用软件。采用的是Swing技术。笔者其实是个菜鸟,但是对java的Swing还是比较喜欢的。 每个人都有这样的思维,或许说习惯更为恰当吧!我们在学习完一门语言的基本语法之后 总是“迫不及待”的想了解这门语言到底能够做什么?这种“冲动”使我们真正的
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
java 取色器_Arava: 用 swing 写一个取色器
备哥以前发我了一个小工具,TakeColor 取色器。来复刻一个吧。分析一下:顶部是菜单,左侧框显示当前鼠标所在的颜色(下面显示当前坐标和颜色值,默认RGB),中间框显示鼠标周围区域,右侧显示取色的列表(按alt+c)取色。下面一行是颜色值,并且可以切换不同的模式。打开调色盘会显示底部的颜色框和调节滑块。TakeColor v1.0先来实现一个简单的屏幕取色。鼠标的移动监听器中的 moved 和 ...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
Java应用---Design for LCore(集截屏,取色,放大,画图,托盘)为一体(含源码)
前言 翻翻自己的U盘,里面的咋东西实在太多了。清理下,无意中发现了以前自己做的小工具。将截屏,取色,放大镜,画图功能集成在一起 的小应用软件。采用的是Swing技术。笔者其实是个菜鸟,但是对java的Swing还是比较喜欢的。 每个人都有这样的思维,或许说习惯更为恰当吧!我们在学习完一门语言的基本语法之后总是“迫不及待”...
Java写的屏幕放大镜
/** * 文件名:Magnifier.java * OS:GNU/Linux Ubuntu 6.10 * IDE:eclipse 3.2 * JDK 版本: 1.6.0 * 版本:0.1 * 作者:88250 * 邮箱&MSN:DL88250@gmail.com * QQ: 845765 */import java.awt.*;import java.awt.event.*;import j
Java世界的透明
Java 中有许多的 参数可以将组件 透明的现实给用户!这一点我认为做的比较好 首先:组件的透明 : 在Java 的组件中除过 JLabel 和 Label 本身的 一些条件限制所以他们本身就被设置成为 不绘制边框的Java组件。最近在做一些 有关Java Swing方面的东西,虽然说现在的JavaSwing 已经不怎么流行啦 但是 有关于 JavaSwing 中
Java:实现局部图像放大(附带源码)
Java:实现局部图像放大(附带源码)
java swing视频教程下载_JAVA Swing 教程
JAVA Swing 教程,包含所有练习源码和讲解教程!初级界面篇练习01分解颜色练习02画板练习03帧练习04画布练习05密码验证界面练习06对话框练习07滚动条练习08边框练习09单选框图片浏览器练习10卡片布局管理器练习11边界布局管理器练习12进程条练习13列表框和组合框练习14选项卡练习15菜单练习16菜单快捷键练习17模式对话框练习18网格布局管理器练习19复选框练习20单选框练习21...
648



被折叠的 条评论
为什么被折叠?



