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

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

2012-09-25 · TA获得超过175个赞
知道小有建树答主
回答量:146
采纳率:84%
帮助的人:42.9万
展开全部
你要画这么大像素的图,内存都耗死你,得用一些技巧
给你个思路,没有代码,是我之前做过一个项目(web版)是浏览图片的,航拍图(像素1万*1万以上),做法是先把图片分割成小块(比如100*100),定义好每一张图的名称(用位置表示),显示的时候取相应的图片显示即可,就像很多电子地图就是这么做的

希望对你有用
笑笑2021JF
2012-09-29
知道答主
回答量:28
采纳率:0%
帮助的人:6.7万
展开全部
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;
}
这个可以用鼠标来拖动图像移动你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式