鼠标移动到图片上实现图片的放大缩小

摘要由CSDN通过智能技术生成
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="图片放大缩小.aspx.cs" Inherits="ASP.NET高级.图片放大缩小" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>

    <script src="js/jquery-1.7.1.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="ASP.N
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现图片中心放大缩小移动鼠标拖移,可以使用Java的图形库,例如Java AWT和Java Swing。 下面是一个简单的实现代码示例: ```java import java.awt.*; import java.awt.event.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; import javax.swing.*; public class ImageZoomPan extends JPanel implements MouseListener, MouseMotionListener, MouseWheelListener { private static final long serialVersionUID = 1L; private BufferedImage image; private double scale = 1; private double xOffset = 0; private double yOffset = 0; private Point lastDragPoint; public ImageZoomPan(BufferedImage image) { this.image = image; this.addMouseListener(this); this.addMouseMotionListener(this); this.addMouseWheelListener(this); } @Override public Dimension getPreferredSize() { return new Dimension((int) (image.getWidth() * scale), (int) (image.getHeight() * scale)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); AffineTransform at = new AffineTransform(); at.translate(xOffset, yOffset); at.scale(scale, scale); g2d.drawRenderedImage(image, at); g2d.dispose(); } @Override public void mouseWheelMoved(MouseWheelEvent e) { int notches = e.getWheelRotation(); if (notches < 0) { scale *= 1.1; } else { scale /= 1.1; } revalidate(); repaint(); } @Override public void mouseClicked(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { lastDragPoint = e.getPoint(); } @Override public void mouseReleased(MouseEvent e) { lastDragPoint = null; } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void mouseDragged(MouseEvent e) { if (lastDragPoint != null) { double dx = e.getX() - lastDragPoint.getX(); double dy = e.getY() - lastDragPoint.getY(); lastDragPoint = e.getPoint(); xOffset += dx / scale; yOffset += dy / scale; repaint(); } } @Override public void mouseMoved(MouseEvent e) { } public static void main(String[] args) throws Exception { BufferedImage image = ImageIO.read(new File("image.jpg")); ImageZoomPan panel = new ImageZoomPan(image); JFrame frame = new JFrame("Image Zoom and Pan"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(panel); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } } ``` 在这个示例中,我们首先定义了一个 `ImageZoomPan` 类,这个类继承自 `JPanel`,并实现了 `MouseListener`、`MouseMotionListener` 和 `MouseWheelListener` 接口。这个类中定义了一个 `BufferedImage` 类型的 `image` 变量,以及一个 `scale` 变量用于缩放图片,以及 `xOffset` 和 `yOffset` 变量用于移动图片。 在 `paintComponent` 方法中,我们使用 `AffineTransform` 类来对图片进行缩放和平移操作,然后使用 `drawRenderedImage` 方法将图片绘制到面板上。 在 `mouseWheelMoved` 方法中,我们根据鼠标滚轮的滚动方向来调整 `scale` 变量的值,然后重新计算面板的大小,并重新绘制面板。 在 `mousePressed` 和 `mouseDragged` 方法中,我们记录鼠标的位置,并计算出鼠标在面板上移动的距离,然后根据缩放比例来调整 `xOffset` 和 `yOffset` 变量的值,然后重新绘制面板。 最后,我们在 `main` 方法中创建一个 `ImageZoomPan` 面板,并将其添加到一个 `JFrame` 窗口中。我们可以通过调用 `pack` 方法来自动调整窗口的大小,然后将窗口设置为可见状态。 当我们运行这个程序时,就可以看到一张图片在面板中心位置显示,并且可以使用鼠标滚轮来缩放图片,使用鼠标拖动来移动图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值