热情软件屋

 

在VB中如何对BMP文件按一定比例进行缩小与放大显示与输出


编号:QA000097
建立日期: 1998年11月13日 最后修改日期:2003年11月30日
所属类别:

章文晋:
    在VB中如何对BMP文件按一定比例进行缩小与放大显示与输出?
    

回答:

    在VB中Form、PictureBox和Printer都有PaintPicture方法,它就可以满足你的要求。这个方法功能是复制图像,其基本语法如下:
     object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
    这里的picture来自Form等的Picture属性,而x1、y1是目标区域的左上角坐标,而x2、y2是源区域的左上角坐标,width1和height1是目标区域的宽度和高度,而width2和height2是源区域的宽度和高度,如果width1=width2且height1=height2,那么就是等比例复制,你只需要选择适当的参数就可以实现缩小与放大。参数opcode是操作码,其含义可以参考Windows API中关于BitBlt和StretchBlt函数的介绍。下面是一个简单的例子:
    Private Sub Form_Click()
     Me.PaintPicture Picture1.Picture, 0, 0, 3500, 2000
    End Sub
    

    这个方法有一个非常好的特性:作为源对象的PictureBox可以是不可见的(Visible属性为False),这在实际中非常方便。
    
    威威的意见:
    在窗体上放上一个PictureBox和一个ImageBox(两个PictureBox也可),先将图片读入PictureBox,取得其长宽数,再按长宽比设置ImageBox的Height和Width即可。
    
    Picture1.Picture = LoadPicture(图片文件名)
     w = Picture1.Picture.Width '图片原宽
     h = Picture1.Picture.Height '图片原高
    
    If h > w Or h = w Then '如果图是高大于宽的
     Image1.Height = 4740 '4740是要缩小或放大到的尺寸,可自行设定
     Image1.Width = 4740 * w / h
     Image1.Picture = Picture1.Picture
    Else '如果宽大于高
     Image1.Width = 4740
     Image1.Height = 4740 * h / w
     Image1.Picture = Picture1.Picture
    End If
    
    

    这样既可缩放,又不会变形。

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 图形、图象, picture, graph, image, draw

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio