C#在winform上画一张大于全屏的图片(至少3000*3000像素)。在窗口最大化下用鼠标拖动图片,必须画面流畅。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#在winform上画一张大于全屏的图片(至少3000*3000像素)。在窗口最大化下用鼠标拖动图片,必须画面流畅。相关的知识,希望对你有一定的参考价值。

使用PictureBox的滚动条的方案(包括DX)就不要说了。
我现在已经不知道C#能不能实现上面的要求了,现在的关键麻烦在于移动图片时,都能看到绘制的过程(就像波浪一样),不流畅啊!(双缓冲不顶用)。
哪位高手有能实现上面要求的代码不(最好是能看到效果的)?
如果你没C#的代码,给我C++(我刚学,自己写还不熟练,看得话完全没问题)的也行。
再次声明一下,不一定只用鼠标拖的哈,我主要是想要在全屏下实现移动图片时必须流畅这个效果的代码。(图片,全屏,移动,流畅)
哪怕你没代码,知道哪有用C#的写的能实现这个效果的程序也行,告诉我,我去下来看看。

你要画这么大像素的图,内存都耗死你,得用一些技巧
给你个思路,没有代码,是我之前做过一个项目(web版)是浏览图片的,航拍图(像素1万*1万以上),做法是先把图片分割成小块(比如100*100),定义好每一张图的名称(用位置表示),显示的时候取相应的图片显示即可,就像很多电子地图就是这么做的

希望对你有用
参考技术A bool flag = false;
int x, y;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

if (flag)

pictureBox1.Left = pictureBox1.Left + (e.X - x);
pictureBox1.Top += e.Y - y;//pictureBox1.Top=pictureBox1.Top+(e.Y-y);当鼠标按下时,图像跟着鼠标动

//Rectangle rect = new Rectangle();
//rect = Screen.GetWorkingArea(this);
Bitmap bmp = (Bitmap)pictureBox1.Image;
try

Color pointColor = bmp.GetPixel(e.X, e.Y);//获取图像像素
textBox2.Text = pointColor.R.ToString();
textBox3.Text = pointColor.G.ToString();
textBox4.Text = pointColor.B.ToString();

catch

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

flag = true;
x = e.X;
y = e.Y;

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

flag = false;

这个可以用鼠标来拖动图像移动你试试

以上是关于C#在winform上画一张大于全屏的图片(至少3000*3000像素)。在窗口最大化下用鼠标拖动图片,必须画面流畅。的主要内容,如果未能解决你的问题,请参考以下文章

C#在winform上画一张大于全屏的图片(至少3000*3000像素)。在窗口最大化下用鼠标拖动图片,必须画面流畅。

C# winform 控件拖动问题

Matlab怎么在一张图上画两条曲线?

mfc里给picture控件加载一张位图,然后在位图上画一条线,该怎么做

css 如何让图片全屏的问题

C# WinForm 重绘标题栏的问题