近日我用C#编写一个绘图软件,碰到关于图像缩放的问题,我搞了一天实在不行了(我还要挤时间看世界杯),请各位高手帮帮忙。具体问题如下:
我的绘图软件使用了pictureBox控件,我如何将其中显示的图片进行任意比例的放大和缩小,请贴出具体做法,谢谢!
另外,还有一个问题,我是用pictureBox控件显示图片,当我的SizeMode属性设置为AutoSize时,我能否随时更改Size属性的大小??如何做??不能的话要怎么办??这个问题谁能解决,我再添分,谢了~~~

解决方案 »

  1.   

    这里要注意的东西有很多,分辩率,Graphics的大小,缩放质量等等
      

  2.   

    to 另外,还有一个问题,我是用pictureBox控件显示图片,当我的SizeMode属性设置为AutoSize时,我能否随时更改Size属性的大小??如何做??不能的话要怎么办??AutoSize肯定不行,改成StretchImage是可以的,不过这样的话,如果当前picturebox的尺寸与image尺寸不合比例的话,会失真。比较正确的做法是用原图按照比例进行缩放,而产生新图,提供给picturebox进行显示。
      

  3.   

    如果只是形成缩略图,可以使用“Image.GetThumbnailImage”方法,参看
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfSystemDrawingImageClassGetThumbnailImageTopic.htm
      

  4.   

    Rectangle sourceRectangle=new Rectangle(e.X-10,e.Y-10,20,20);  //要放大的区域
       //Rectangle destRectangle=new Rectangle(e.X-20,e.Y-20,40,40);
       Rectangle destRectangle=new Rectangle(pictureBox1.Width-150,pictureBox1.Height-150,pictureBox1.Width,pictureBox1.Height);   //放大的比例
       g.DrawImage(myImage,destRectangle,sourceRectangle,GraphicsUnit.Pixel);
      

  5.   

    定义坐标时,和pictureBox的width和heigt关联起来,扩大和缩小相应改变pictureBox的width和heigt的属性就可以
      

  6.   

    Rectangle sourceRectangle=new Rectangle(e.X-10,e.Y-10,20,20);  //要放大的区域
       //Rectangle destRectangle=new Rectangle(e.X-20,e.Y-20,40,40);
       Rectangle destRectangle=new Rectangle(pictureBox1.Width-150,pictureBox1.Height-150,pictureBox1.Width,pictureBox1.Height);   //放大的比例
       g.DrawImage(myImage,destRectangle,sourceRectangle,GraphicsUnit.Pixel);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```
    我怎么运行起来没效果??是不是与我的SizeMode属性设置为AutoSize有关??要怎么改??
      

  7.   

    to 不是缩略图是要能按任意比例缩放~~~,有谁会做??Bitmap bitNewSize = new Bitmap( yourBmp, 100, 100 );
    yourPictureBox.Image = bitNewSize;
      

  8.   

    按着楼上的方法,我的pictureBox的SizeMode属性设置有没有影响??
      

  9.   

    Bitmap bitNewSize = new Bitmap( yourBmp, 100, 100 );
    yourPictureBox.Image = bitNewSize;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    谢谢~Knight94,图像的缩放我实现了,可是有一个问题,我的pictureBox控件的Size属性和所显示的图像一样大,我的可绘图区域就减小了,不知道能不能自己控制Size属性(在pictureBox的SizeMode属性设置为autosize)???谢谢先~~~
      

  10.   

    我认为用PictureBox是一个不大好的做法,不如直接从Control继承一个用来绘图的控件(Canvas),这样可能复杂一些,但能实现很丰富的操作。
      

  11.   

    楼上的能不能说得再详细一点,我好研究一下;不过现在时间来不及改了,最好有谁能够通过PictureBox实现我说的情况:
    图像的缩放我实现了后,我的pictureBox控件的Size属性和所显示的图像一样大,我的可绘图区域就减小了,不知道能不能自己控制Size属性(在pictureBox的SizeMode属性设置为autosize)???谢谢先~~~
      

  12.   

    有谁知道cherishl所说的Canvas是什么?我在MSDN中找不到............................
    谢谢~~~~~~~~~~~~~~~~~~~~~~~
      

  13.   

    picturebox设为autosize后,就不能修改picturebox的大小了。你说说具体要做什么。
      

  14.   

    直接设置graphic的属性,设置绘图的比例可以不
      

  15.   

    自己画一下了吧,graphic.draw( 这个函数可以搞定了