C# 如何在PictureBox控件中移动图形? 1.VS 2008;2.实现移动PictureBox上的一个曲线图形,类似于Google地图,上下左右可以即时移动。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.MouseDown标记开始移动图形2.MouseMove里面改变图形的位置坐标3.MouseUp标记结束移动图形 Point pck; bool dragFlag = false; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { pck = new Point(e.X, e.X); dragFlag = true; } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (dragFlag) { Point pend = this.PointToClient(pictureBox1.PointToScreen(new Point(e.X, e.Y))); pend.Offset(pck.X * -1, pck.Y * -1); pictureBox1.Location = pend; } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { dragFlag = false; } 使用Location不是使整个PictureBox都移动了么?我只是想让PictureBox上的图像移动,比如,上面有条曲线,曲线的长度比PictureBox的size.width要长,这时候就想通过移动来显示曲线的其他部分。 pictureBox放在一个Panel中,panel1.AutoScroll=true;将pictureBox的SizeMode设为AutoSize,这样它与图片的大小一致。这样panel1中出现滚动条,可以浏览全图了。 移动的时候不是改变pictureBox的位置 - -!而是在pictureBox的Paint事件中改变图形的位置图形的原点坐标为(x, y)初始的时候是(0, 0)MouseMove后,原点发生变化:x += x方向偏移量;y += y方向偏移量;MouseMove里面加一句this.Invalidate();然后以新的原点位置进行重绘: private void pictureBox_Paint(object sender, PaintEventArgs e) { e.Graphics.TranslateTransform(x, y); }图形会移动到以(x, y)为原点的位置 .net控件如何注册 C#中DataGridView中怎么设置可以选中多行? 如何利用c#把Access数据库中的表和查询导入到另外一个数据库中 asp.net(c#)调用C++的DLL问题! C# Sybase 中文乱码 treeview在父节点下插入子节点 如何获取当前日期前一个月或两个月的日期! C# var 赋值false 居然if执行,请教为什么? 新手求助:关于c#中声音播放? C#的初级问题: AspNetPager翻页控件 C#有谁能帮忙解释下面月份?
2.MouseMove里面改变图形的位置坐标
3.MouseUp标记结束移动图形
Point pck;
bool dragFlag = false;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
pck = new Point(e.X, e.X);
dragFlag = true;
} private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (dragFlag)
{
Point pend = this.PointToClient(pictureBox1.PointToScreen(new Point(e.X, e.Y)));
pend.Offset(pck.X * -1, pck.Y * -1);
pictureBox1.Location = pend;
}
} private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
dragFlag = false;
}
将pictureBox的SizeMode设为AutoSize,这样它与图片的大小一致。
这样panel1中出现滚动条,可以浏览全图了。
而是在pictureBox的Paint事件中改变图形的位置
图形的原点坐标为(x, y)
初始的时候是(0, 0)
MouseMove后,原点发生变化:
x += x方向偏移量;
y += y方向偏移量;
MouseMove里面加一句this.Invalidate();然后以新的原点位置进行重绘:
private void pictureBox_Paint(object sender, PaintEventArgs e)
{
e.Graphics.TranslateTransform(x, y);
}图形会移动到以(x, y)为原点的位置