1个Panel:尺寸400*400,BorderStyle属性Fixed3D,AutoScroll属性True
在此Panel上加1个PictureBox:Dock属性None、SizeMode属性AutoSize、然后显示一幅1024*768的图片。这时,在Panel上你就只能看到这幅图的一部分,并且Panel的水平和垂直滚动条都自动显示出来了。你可以通过拖动滚动条来看这幅图。当这样看图你难道不觉得不方便吗?能不能做到象ACDSee软件那样,用鼠标拖动图片来看,怎样才能做到这种效果!!!
在此Panel上加1个PictureBox:Dock属性None、SizeMode属性AutoSize、然后显示一幅1024*768的图片。这时,在Panel上你就只能看到这幅图的一部分,并且Panel的水平和垂直滚动条都自动显示出来了。你可以通过拖动滚动条来看这幅图。当这样看图你难道不觉得不方便吗?能不能做到象ACDSee软件那样,用鼠标拖动图片来看,怎样才能做到这种效果!!!
解决方案 »
- c#中调用winapI的globalmemorystatus
- 窗体连接SQL数据库问题
- 请教:如何扩展父类的方法
- 求一个正则表达式
- 如何实现将Oracle 数据导入到Access 的方法, 一条一条的做吗???
- 用HttpWebRequest抓WEB页面内容,多线程的情况下,如果有一个线程遇到一个很慢网站,其它线程的速度也会变的很慢。
- 请问如何用Type(反射)来读取某一控件(以TextBox为例)的所有的属性名称???
- WinForm DataGridView实现鼠标移上去当前行字体变颜色的案例,如下图,在线等
- C# winform 程序 dataGridView 绑定的 ds数据集怎么设定只显示需要的列?
- c#.net创建Access文件
- 锁定静态变量
- 纯净的C#学习群
1)拷如下代码到代的form里面
Point clickPoint;
const short VK_LBUTTON = 0x01;[DllImport("user32")]
public static extern short GetAsyncKeyState(int vKey);
bool IsKeyDown(short vkey)
{
return (GetAsyncKeyState( vkey ) & 0x8000) > 0;
}2) 在pictureBox的 MouseDown 和MouseMove 事件加入如下代码,就可以托动了private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
clickPoint.X = e.X;
clickPoint.Y = e.Y;
} private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (IsKeyDown(VK_LBUTTON))
{
(sender as Control).Cursor = Cursors.Hand;
(sender as Control).Left += e.X - clickPoint.X ;
(sender as Control).Top += e.Y - clickPoint.Y ; }
}
各位继续努力啊!希望能做到像ACDSee那样。
我照着你的方法做了,但并不是我想要的效果。
这样吧,你自己照着你的代码写个程序,然后你再用ACDSee试试看。你就知道,两种效果有多大差异了!!
实现ACDsee拖动效果有何难!!!
况且你这种做法等于是脱了裤子放屁,居然还用API函数,至于吗?
图片倒是拖动了,底下的Panel也露出来了,有够难看!
看看ACDSee的效果,拖动精细,又无闪烁,且总是看到图片的一部分,而不是像你这种,看到的Panel和PictureBox的混合。