~~~~~~~~关于C#绘图问题讨论(2)~~~~~~~~
近日我用C#编写一个绘图软件,碰到关于图像缩放的问题,我搞了一天实在不行了(我还要挤时间看世界杯),请各位高手帮帮忙。具体问题如下:
我的绘图软件使用了pictureBox控件,我如何将其中显示的图片进行任意比例的放大和缩小,请贴出具体做法,谢谢!
另外,还有一个问题,我是用pictureBox控件显示图片,当我的SizeMode属性设置为AutoSize时,我能否随时更改Size属性的大小??如何做??不能的话要怎么办??这个问题谁能解决,我再添分,谢了~~~
问题点数:30、回复次数:22Top
1 楼rola(林)回复于 2006-07-05 00:18:39 得分 2
关注Top
2 楼liujiayu10(活着就好)回复于 2006-07-05 08:25:07 得分 2
这里要注意的东西有很多,分辩率,Graphics的大小,缩放质量等等Top
3 楼Knight94(愚翁)回复于 2006-07-05 08:27:12 得分 4
to 另外,还有一个问题,我是用pictureBox控件显示图片,当我的SizeMode属性设置为AutoSize时,我能否随时更改Size属性的大小??如何做??不能的话要怎么办??
AutoSize肯定不行,改成StretchImage是可以的,不过这样的话,如果当前picturebox的尺寸与image尺寸不合比例的话,会失真。
比较正确的做法是用原图按照比例进行缩放,而产生新图,提供给picturebox进行显示。Top
4 楼mlhy20060406()回复于 2006-07-05 10:43:50 得分 0
markTop
5 楼kokcc()回复于 2006-07-05 11:20:14 得分 0
关于图像的缩放不会太难的吧??用作标变换是不是也可以??谁能给小弟我解释一下具体做法???(我是要缩放位图~~~)谢谢~~~Top
6 楼Knight94(愚翁)回复于 2006-07-05 11:27:05 得分 4
如果只是形成缩略图,可以使用“Image.GetThumbnailImage”方法,参看
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpref/html/frlrfSystemDrawingImageClassGetThumbnailImageTopic.htmTop
7 楼kokcc()回复于 2006-07-05 11:31:56 得分 0
不是缩略图是要能按任意比例缩放~~~,有谁会做??Top
8 楼diandian82(点点(nothing))回复于 2006-07-05 11:37:05 得分 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);
Top
9 楼xuguanghui1221()回复于 2006-07-05 11:38:39 得分 2
定义坐标时,和pictureBox的width和heigt关联起来,扩大和缩小相应改变pictureBox的width和heigt的属性就可以Top
10 楼kokcc()回复于 2006-07-05 11:55:55 得分 0
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有关??要怎么改??Top
11 楼Knight94(愚翁)回复于 2006-07-05 12:03:53 得分 5
to 不是缩略图是要能按任意比例缩放~~~,有谁会做??
Bitmap bitNewSize = new Bitmap( yourBmp, 100, 100 );
yourPictureBox.Image = bitNewSize;Top
12 楼kokcc()回复于 2006-07-05 12:11:03 得分 0
按着楼上的方法,我的pictureBox的SizeMode属性设置有没有影响??
Top
13 楼Knight94(愚翁)回复于 2006-07-05 12:13:47 得分 2
设置为autosizeTop
14 楼kokcc()回复于 2006-07-05 13:10:07 得分 0
不过我这样设置后,我的绘图区域就和所打开的图形大小一样,如果是小图,我怎样才能增加我的绘图区域???谢谢~~~Top
15 楼kokcc()回复于 2006-07-05 14:59:35 得分 0
Bitmap bitNewSize = new Bitmap( yourBmp, 100, 100 );
yourPictureBox.Image = bitNewSize;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
谢谢~Knight94,图像的缩放我实现了,可是有一个问题,我的pictureBox控件的Size属性和所显示的图像一样大,我的可绘图区域就减小了,不知道能不能自己控制Size属性(在pictureBox的SizeMode属性设置为autosize)???谢谢先~~~
Top
16 楼cherishl(老郎 上尉)回复于 2006-07-05 16:05:22 得分 2
我认为用PictureBox是一个不大好的做法,不如直接从Control继承一个用来绘图的控件(Canvas),这样可能复杂一些,但能实现很丰富的操作。Top
17 楼kokcc()回复于 2006-07-05 18:38:10 得分 0
楼上的能不能说得再详细一点,我好研究一下;不过现在时间来不及改了,最好有谁能够通过PictureBox实现我说的情况:
图像的缩放我实现了后,我的pictureBox控件的Size属性和所显示的图像一样大,我的可绘图区域就减小了,不知道能不能自己控制Size属性(在pictureBox的SizeMode属性设置为autosize)???谢谢先~~~
Top
18 楼kokcc()回复于 2006-07-05 21:26:44 得分 0
有谁知道cherishl所说的Canvas是什么?我在MSDN中找不到............................
谢谢~~~~~~~~~~~~~~~~~~~~~~~Top
19 楼Knight94(愚翁)回复于 2006-07-06 08:56:42 得分 3
picturebox设为autosize后,就不能修改picturebox的大小了。
你说说具体要做什么。Top
20 楼okkk(和海)回复于 2006-07-06 13:17:17 得分 0
很多资料了,LZ搜索一下 慢慢看吧Top
21 楼seemon(飞虫)回复于 2006-07-06 13:28:08 得分 0
直接设置graphic的属性,设置绘图的比例可以不Top
22 楼wwqna(york)回复于 2006-07-06 13:54:54 得分 0
自己画一下了吧,graphic.draw( 这个函数可以搞定了Top




