【问题标题】:moving image on webpage网页上的动态图像
【发布时间】:2009-07-06 13:58:09
【问题描述】:

这个解决方案在 asp.net dragging picturebox inside winform on runtime 中是否可行

我只是希望能够在网络表单上移动图像

【问题讨论】:

  • @alex: 尊重,如果你不知道它是网页上的图像( 标签),并且这都是你必须做的客户端在 JavaScript 中做,那么你尝试这个可能为时过早。
  • 哦,我明白你在说什么,现在我明白你的编辑了。但无论如何,您对此有解决方案吗?

标签: c# asp.net vb.net webforms


【解决方案1】:

您引用的问题是用 Windows 窗体编写的。您不能像在 Windows 窗体中那样在 Web 窗体中拖放元素。

如果您想在 Web 应用程序中拖放元素,您应该使用客户端代码。

客户端最好的选择是使用库,我认为最好的选择是JQuery UIIn the demo I linked 用户可以拖动一个 div 元素。这是一个带有静态图像和服务器端 ASP.NET 控件的简单拖动示例:

<head runat="server">
    <script src="js/jquery-1.3.2.min.js" language="javascript" ></script>
    <script src="js/jquery-ui-1.7.2.custom.min.js" language="javascript" ></script>
    <script type="text/javascript">
        $(function() {
            $("#draggable").draggable();
            $("#<%= imgServerControl.ClientID %>").draggable();
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <!-- Static Draggable Image -->
    <img src="ac-dc.jpg" id="draggable" />

    <!-- ASP.NET server image control -->
    <asp:Image ImageUrl="ac-dc.jpg" ID="imgServerControl" runat="server" />
    </form>
</body>
</html>

注意:要测试此代码,您只需下载带有可拖动组件from hereJQuery UI 并将其添加到您的脚本文件夹中。

【讨论】:

  • 对不起,我是菜鸟。我可以将源代码粘贴到 asp.net 中吗?你能更具体地说明我如何使用它吗?
  • 你需要下载Jquery库并放在JS文件夹中。
【解决方案2】:

Canavar 和 John Saumders 试图说明的重点是,您需要了解 ASP.NET 和客户端 UI 代码之间的区别。

虽然 ASP.NET Webform 确实使用一定数量的客户端代码来完成它们的工作,但这主要与将 UI 事件传递到服务器端有关,以便它们可以被处理。

如果您的拖放操作导致某些服务器端数据操作(这很有可能),那么您还需要将适当的信息传达给服务器端。

所涉及的概念相当简单,但将它们全部联系在一起可能会有点棘手 - 并且很大程度上取决于您的底层网络表单和应用程序架构。

您能否提供有关应用程序功能的进一步说明,将图像从一个地方拖到另一个地方时您期望发生的情况,以及您是否/如何期望图像位置被记住。

【讨论】:

  • 非常感谢您的回复。我不需要与服务器进行任何交互。我只需要能够在板上移动图像。这很简单。
  • 在这种情况下,请尽量专注于事物的客户端方面(Canavar 提供的 Jquery 示例),不要过于专注于 ASP.NET 方面。
【解决方案3】:

虽然我绝对建议尝试学习使用 JQuery 来做到这一点。 “最简单”的方法是利用 Asp.Net Ajax Control 工具包 DragPanel。 http://www.asp.net/AJAX/AjaxControlToolkit/Samples/DragPanel/DragPanel.aspx

【讨论】:

    【解决方案4】:

    它在 Javascript 中的工作方式与在 Windows 窗体中的工作方式几乎相同:您处理鼠标移动事件和每个刻度,您根据鼠标的位置更新元素的位置。阅读event object in Javascript on w3schools,然后尝试这样的事情(这可能只适用于 IE,因为我刚刚测试过它):

    <html>
      <body onmousemove="handleMouseMove(event)">
      <img id="img"
        onmousedown="handleMouseDown(event);"
        onmouseup="handleMouseUp(event)" 
        src="http://img.youtube.com/vi/BML3EoeJ9Bk/default.jpg"
        ondrag="return false" />
    
      <script>
        var dragging = false; 
        function handleMouseDown() {
          dragging = true; 
        }
        function handleMouseUp() {
          dragging = false; 
        }
        function handleMouseMove(evt) {
          if (!dragging) return;
          var img = document.getElementById('img');
          img.style.position = 'absolute';
          img.style.left = (evt.clientX - 5) + 'px';
          img.style.top = (evt.clientY - 5) + 'px';
        }
      </script>
      </body>
    </html>
    

    【讨论】:

    • 在没有库的情况下处理拖放对于跨浏览器工作来说可能很痛苦;例如,“ondrag”在非 IE 浏览器中不是事件,但在 IE 中需要它。 evt.clientX 和 Y 在其他浏览器中的命名也可能不同(我记不清了)。因此,这是了解事物如何工作的开始,但正如其他发帖人所说,建议采取下一步并开始使用有助于规范浏览器之间差异的库,例如 jQuery。
    【解决方案5】:

    我建议使用 JQuery-UI 可拖动插件: http://docs.jquery.com/UI/API/1.7/Draggable

    $("img").draggable();
    

    【讨论】:

      猜你喜欢
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多