picturebox 图片过大出错,但只需要部分显示怎么办?
要在picturebox 里绘制一张图片,需要有放大缩小的功能又不能失真,所以考虑过用wmf&emf图片,但是没有深究
缩放倍数过大会超出内存,所以autoredraw属性不太可取
因为绘制的图形调用的过程比较多,而且写的不够灵活,从这里该很麻烦
有没有一种方法,可以在picturebox绘图时只有其中一部分区域保存在内存里,可以调用?
其它好的建议也可以,谢谢。 --------------------编程问答-------------------- PaintPicture函数可以剪裁、缩放 --------------------编程问答-------------------- 我是用 Vscroll与Hscroll 来浏览放大后的图片, 可以放大到数倍的1024768图片,但因超内存而无法保存,所以我只能将代码限定在3.6倍左右, 呵呵, 我也想解决这个问题.
变通的办法是:因为图片放大后可以以滚动条来浏览全图, 因此你可以再用MouseDown MouseUp来截取某区块的图片.
有兴趣的话可以下载看看, 交流一下心得,我也一直想改进你说的这个问题.
【CBM666 的电子彩页制作系统】
http://hi.baidu.com/cbm666/blog/item/96e19b50858e436884352454.html
--------------------编程问答-------------------- 图片放大和缩小正规的方式都是只绘制出画布需要显示的部分,其他的方式说实在的叫山寨版,但是山寨适合于很多人。大家可以搜索一个叫IBMP的VB图像处理软件,看看人家怎么做的。 --------------------编程问答-------------------- 用DRAWIMAGE函数应该可以做到 --------------------编程问答-------------------- 用API函数StretchBlt来缩放图片,同时用SetStretchBltMode函数. --------------------编程问答-------------------- StretchBlt来缩放图片
这个API理论上不错, 但它大大的使图片产生杂纹失真, 难道楼上同志有妙方 ? --------------------编程问答-------------------- StretchBlt缩放是可以的,但必须用SetStretchBltMode设置缩放模式为HALFTONE模式,这样图像质量要好一些! --------------------编程问答-------------------- 楼主的意思是否说只放大后只显示窗口部分的图片呢.
如果是这样的话,可以根据屏幕大小反过来除以放大倍率,从原图截取一部分再放大输出.
至于如何放大,可以简单的用Paintpicture方法,也可以用StretchBlt,也可以自己写插值算法.
补充:VB , API