c#中拖动图片的例子

这个问题来自论坛提问,并没有什么难度,也不需要重画内容。当然还有一种方法是通过api发送WM_SysCommand 和SC_MOVE,也就是拖动无标题窗体的方法 ,但是效果没有这个好。

using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsApplication2
...{
  public partial class Form1 : Form
  ...{
    static string strDown = @"AAACAAEAICAAAAsACQAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAAAA
            AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
            AAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAN/wAACf+AAAH
            9gAADbQAAA2wAAAJsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
            AAAAAAAA////////////////////////////////////////////8AP///gH///4
            B///+Af///AD///gA///wAH//4AB//+AAf//gAD//4AA///AAP//4AH//+AH///g
            D////j////////////////////////////////////////////8=";
    static string strUp = @"AAACAAEAICAAAAoACAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAA
            AAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
            AAAAAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAd/wAAGf+
            AAAH9gAADbYAAA2yAAAZsAAAGbAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
            AAAAAAAAAAAAA////////////////////////////////////////////8AP///
            gH///4B///+Af///AD///gA///wAH//4AB//8AAf//AAD//4AA///gAP//4AD//
            8AF///AB///5A////5///////////////////////////////////////8=";

    Cursor curUp = new Cursor(new System.IO.MemoryStream(Convert.FromBase64String(strUp)));
    Cursor curDown = new Cursor(new System.IO.MemoryStream(Convert.FromBase64String(strDown)));
    public Form1()
    ...{
      InitializeComponent();
      this.pictureBox1.Cursor = curUp;
    }

    bool bDragging = false;
    Point pClicked;

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    ...{

      bDragging = true;
      pClicked = new Point(e.X, e.Y);
      this.pictureBox1.Cursor = curDown;
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    ...{
      if (bDragging)
      ...{
        Point oMoveToPoint;
        oMoveToPoint = this.PointToClient(pictureBox1.PointToScreen(new Point(e.X, e.Y)));
        oMoveToPoint.Offset(pClicked.X * -1, pClicked.Y * -1);
        pictureBox1.Location = oMoveToPoint;
      }
    }
    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    ...{
      bDragging = false;
      this.pictureBox1.Cursor = curUp;
    }
  }
}

时间: 2024-09-08 11:32:05

c#中拖动图片的例子的相关文章

在ImageView中拖动图片

mainActivity如下: package cn.c; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.Display; import android.view.GestureDetector; import android.view.GestureD

目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)

在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行opencv中给的sample并稍加修改.      Camshift函数的原型为:RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria).      其中probImage为输入图像直方图的反向投影

Android App中实现图片异步加载的实例分享_Android

一.概述一般大量图片的加载,比如GridView实现手机的相册功能,一般会用到LruCache,线程池,任务队列等:那么异步消息处理可以用哪呢? 1.用于UI线程当Bitmap加载完成后更新ImageView 2.在图片加载类初始化时,我们会在一个子线程中维护一个Loop实例,当然子线程中也就有了MessageQueue,Looper会一直在那loop停着等待消息的到达,当有消息到达时,从任务队列按照队列调度的方式(FIFO,LIFO等),取出一个任务放入线程池中进行处理. 简易的一个流程:当需

avalon js实现仿微博拖动图片排序_javascript技巧

下文针对仿微博图片随意拖动,调整图片的顺序,讲解的很详细,文章肯定还有欠缺的地方,欢迎提出批评改正.废话不多说了,看具体内容吧. 点击此处进入源码下载 什么是拖动图片排序? 就像微博这种,上传后允许用户通过拖动图片,调整几张图片的顺序. 可以看到微博在这里把每张图片固定了尺寸,稍微严谨点的话,就需要像上一篇文章那样,外面是响应式的等高等宽的若干div容器,里面则是等比例缩放的响应式图片. 下面说下要求. 1.当然首先图片要可以拖动. 2.图片移出其原本的位置,拖动到目标位置并且未松开鼠标完成拖动

学习网页中的图片如何应用CSS的滤镜的效果

有时候,我们需要给网页中的图片加一些特殊的效果,比如透明.扭曲.阴影或者翻转等,我们一般都会想到用Photoshop等一些图形软件来处理,其实我们也可以利用CSS(层叠式样表)提供的一些滤镜来处理,这对于不熟悉Photoshop的网友来说,是非常好的一件事. 我们先从较简单的开始,介绍几个没有参数的滤镜. 1.Gray滤镜 Gray滤镜的作用是产生黑白效果 使用方法:<img src=www.ddvip.com" style="filter:gray"> 2.In

在ASP.NET中把图片保存到SQL SERVER数据库

asp.net|server|数据|数据库 介绍在很多情况下,我们需要把图片保存到数据库中.在某些应用程序中,存在一些敏感信息不能被存储到文件系统中,因为存储在文件系统上的任何图片都很容易被用户非法获得. 本文将讨论在ASP.NET中怎样把图片保存到SQL SERVER数据库中. 在本文中我们将了解到以下几方面的内容: l???????? 上载图片文件的要求 l???????? 使用Strem对象 l???????? 获得上载图片大小和类型 l???????? 如何使用InputStream方法

在Word 2010文档中裁剪图片

在Word 2010文档中,用户可以方便地对图片进行裁剪操作,以截取图片中最需要的部分,操作步骤如下所述: 第1步,打开Word 2010文档窗口,首先将图片的环绕方式设置为非嵌入型(参考教程<在Word 2010文档中设置图片文字环绕方式>).然后单击选中需要进行裁剪的图片.在"图片工具"功能区的"格式"选项卡中,单击"大小"分组中的"裁剪"按钮,如图2010060701所示. 图2010060701 单击&qu

在Word 2007文档中设置图片尺寸

在Word2007文档中,用户可以通过多种方式设置图片尺寸.例如拖动图片控制手柄.指定图片宽度和 高度数值等,下面介绍最常用的三种方式. 1.拖动图片控制手柄 用户在Word文档中选中图片的时候,图片的周围会出现8个方向的控制手柄.拖动四角的控制手柄可以 按照宽高比例放大或缩小图片的尺寸,拖动四边的控制手柄可以向对应方向放大或缩小图片,但图片宽高 比例将发生变化,从而导致图片变形,如图2009022401所示. 图2009022401 拖动图片控制手柄设置图片尺寸 2.直接输入图片宽度和高度尺寸

ASP.NET中存取SQL Server数据库中的图片

SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型.下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法.在这篇文章中我们要看到如何在SQL Server中存储和读取图片. 1.建立一个表: 在SQL SERVER中建立这样结构的一个表: 列名 类型 目的 ID Integer 主键ID IMGTITLE Varchar(50) 图片的标题 IMGTYPE Varchar(50) 图片类型. ASP.NET要以辨认的类型 IMGDATA Imag