欢迎光临
我们一直在努力

.NET中Form.AutoScrollPosition的运用-.NET教程,.NET Framework

建站超值云服务器,限时71元/月
今天拿c#写了一个支持滚动的图片显示程序(winform程序),主要运用form的autoscroll,代码很简单,关键代码如下:
/// <summary>
/// form的load事件
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
private void form1_load(object sender, system.eventargs e)
{
   //这个很关键,只有该属性为true时,窗口才会在控件超出窗口范围时
    //自动添加滚动条,并在我们操作滚动条时,自动滚动控件
    this.autoscroll = true;
}
/// <summary>
/// 设置一个图片文件到picturebox1上
/// </summary>
/// <param name=”filename”>图片文件名</param>
private void setimage(string filename)
{
    bitmap bm = new bitmap(filename);
    picturebox1.backgroundimage = bm;
   
    graphicsunit bmgu = graphicsunit.pixel;
    rectanglef rectf = bm.getbounds(ref bmgu);
    //设置picturebox1的大小和位置。如果该控件超出form的范围,form会自动
    //添加滚动条
    picturebox1.setbounds(0, 0, (int)rectf.width, (int)rectf.height);
}
/// <summary>
/// picturebox1的dobuleclick事件
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
private void picturebox1_doubleclick(object sender, system.eventargs e)
{
    //打开一个文件对话框选择图片文件
    openfiledialog openfiledialog = new openfiledialog();
    openfiledialog.filter = “image files|*.bmp;*.jpg;.jpeg;*.gif”;
    if(openfiledialog.showdialog() == dialogresult.ok)
    {
        //设置要显示的图片
        setimage(openfiledialog.filename);
    }
}
 
运行一下,似乎很正常,双击picturebox1,打开一个图片文件,如果图片尺寸过大,会自动出现滚动条。只是有一种情况,先打开一个大图片,然后拖动滚动条到最后,然后再打开一图片,图片显示的位置就出错了(不是显示在左上角)。奇怪了,我明明设置了picturebox1的x y为0了啊:picturebox1.setbounds(0, 0, ……)真是很费解!!
 
经过艰苦地攻读framework帮助文件,终于找出原因,现在和大家分享:原来当我们改变了窗口的滚动条的位置后,窗口客户区的坐标原点就发生了变化,和原来的坐标原点的偏移量可以用form.autoscrollposition表示。
既然问题找到了,解决就很简单,修改setimage函数的最后一句代码为:
picturebox1.setbounds(autoscrollposition.x, autoscrollposition.y, (int)rectf.width, (int)rectf.height);
就一切ok了!!
赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » .NET中Form.AutoScrollPosition的运用-.NET教程,.NET Framework
分享到: 更多 (0)