CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

怎样在LoadPicture是设定图象大小(宽和高)

楼主loveyun(孤竹无名)2003-08-03 04:57:54 在 VB / 基础类 提问

当然用别的方法也行  
  主要是实现功能  
  如果图象大于80x80就缩小成80x80 问题点数:50、回复次数:2Top

1 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2003-08-03 06:48:47 得分 20

用LoadPicture装载好后再执行PaintPicture方法缩放  
   
   
   
     
  PaintPicture   方法  
               
   
  用以在   Form,   PictureBox   或   Printer   上绘制图形文件(.bmp、.wmf、.emf、.cur、.ico或   .dib)的内容。不支持命名参数。  
   
  语法  
   
  object.PaintPicture   picture,   x1,   y1,   width1,   height1,   x2,   y2,   width2,   height2,   opcode  
   
  PaintPicture   方法的语法包含下列部分:  
   
  部分   描述    
  object   可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略   object,带有焦点的   Form   对象缺省为   object。    
  Picture   必需的。要绘制到   object   上的图形源。Form   或   PictureBox   必须是   Picture   属性。    
  x1,   y1   必需的。均为单精度值,指定在   object   上绘制   picture   的目标坐标(x-轴和y-轴)。object   的   ScaleMode   属性决定使用的度量单位。      
  Width1   可选的。单精度值,指示   picture   的目标宽度。object   的   ScaleMode   属性决定使用的度量单位。如果目标宽度比源宽度   (width2)   大或小,将适当地拉伸或压缩   picture。如果该参数省略,则使用源宽度。    
  Height1   可选的。   单精度值,指示   picture   的目标高度。object   的   ScaleMode   属性决定使用的度量单位。如果目标高度比源高度   (height2)   大或小,将适当地拉伸或压缩   picture。如果该参数省略,则使用源高度。    
  x2,   y2   可选的。均为单精度值,指示   picture   内剪贴区的坐标(x-轴和y-轴)。object   的   ScaleMode   属性决定使用的度量单位。如果该参数省略,则缺省为   0。    
  Width2   可选的。单精度值,指示   picture   内剪贴区的源宽度。object   的   ScaleMode   属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。    
  Height2   可选的。   单精度值,指示   picture   内剪贴区的源高度。object   的   ScaleMode   属性决定使用的度量单位。如果该参数省略,则使用整个源高度。    
  Opcode   可选的。是长型值或仅由位图使用的代码。它用来定义在将   pictur   绘制到   object   上时对   picture   执行的位操作(例如,   vbMergeCopy   或   vbSrcAnd   操作符)。关于位操作符常数的完整列表,请参阅   Visual   Basic   Help   文件中的   RasterOp   Constants   主题。    
  在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用   vbSrcCopy,而不能使用其他的opcode;并且,与图案   (或   SDK   术语中的"画笔"),如   MERGECOPY、   PATCOPY、   PATPAINT   和   PATINVERT,相交互的opcode实际上是同目标的   FillStyle   属性交互。  
   
  注意       Opcode   用于将按位操作传递到位图。当传递其他图象类型时将一个值给该参数会造成“无效过程调用或参数”错误。这是设计的原因。要避免这个错误,对于除位图外的图象,将   Opcode   参数置为空。  
     
   
   
  说明  
   
  通过使用负的目标高度值   (height1)   和   /   或目标宽度值   (width1)   ,可以水平或垂直翻转位图。    
   
  可以省略任何多个可选的尾部的参数   。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。  
   
  注意,在将一个.Bmp加载入   PictureBox   控件和使用   Windows   API   函数   BitBlt()   添加图片之间有一点不同。当您对一个图象使用   BitBlt()   时,PictureBox   控件不知道象您使用   LoadPicture方法那样去调整大小。将   ScaleWidth   和   ScaleHeight   属性设置为图象的大小也不起作用。如果您想在使用   BitBlt   之后用   PictureBox   调整新图片的大小,必须用代码手工做,转换单位并处理边框,下面是如何这样做的一个简单示例:  
   
  Sub   ResizePictureBoxToImage(pic   as   PictureBox,   twipWd   _  
      as   Integer,   twipHt   as   Integer)  
    '   该代码假设所有的单位都为缇。如果  
    '   不是,必须在调用该例程之前,转换为缇。  
    '   这里也假设图象显示在0,0处。  
    Dim   BorderHt   as   Integer,   BorderWd   as   Integer  
    BorderWd   =   Pic.Width   -   Pic.ScaleWidth  
    BorderHt   =   Pic.Height   -   Pic.ScaleHeight  
    pic.Move   pic.Left,   pic.Top,   twipWd   +   BorderWd,   _  
        twipHt   +   BorderHt  
  End   Sub  
  Top

2 楼csdngoodnight(居然比我还快,你真行!)回复于 2003-08-03 07:49:22 得分 30

Picture2   =   LoadPicture(FileName)  
   
          '判断   Picture2   图片大小,调整后,打印到   Picture1  
          Dim   sHW1   As   Single  
          sHW1   =   Picture1.Height   /   Picture1.Width  
          'Picture1.AutoRedraw   =   True  
          '单位换算:一个象素单位大概相当于   15   个缇  
          'Picture1.Height   =   指定高度(默认:缇)  
          'Picture1.Width   =   指定宽度(默认:缇)  
           
          If   Picture2.Height   /   Picture2.Width   >   sHW1   Then  
                  '如果源图片高与宽比例大于需求比例,取原宽度和高度的中间区域  
                  Picture1.PaintPicture   Picture2.Picture,   0,   0,   Picture1.Width,   Picture1.Height,   _  
                          0,   (Picture2.Height   -   Picture2.Width   *   sHW1)   /   2,   Picture2.Width,   Picture2.Width   *   sHW1  
          Else  
                  '否则,取宽度的中间区域和原高度  
                Picture1.PaintPicture   Picture2.Picture,   0,   0,   Picture1.Width,   Picture1.Height,   _  
                          (Picture2.Width   -   Picture2.Height   /   sHW1)   /   2,   0,   Picture2.Height   /   sHW1,   Picture2.Height  
          End   If  
          Set   Picture2.Picture   =   LoadPicture("")     '清空  
  Top

相关问题

  • 图象大小处理
  • 怎么样改变图象大小?
  • ★★★图象大小、品质的问题★★★
  • 如何调整图象大小??
  • 求救:设定Frame大小
  • 怎样设定本窗口大小。
  • 如何更改图象文件的大小
  • 请教一个图象自适应Timage大小的问题?
  • 如何得到image.picture中load的图象的大小(kb)????
  • 请教高手~~动态改变图象大小

关键词

  • 属性
  • 剪贴
  • 指示
  • 语法
  • picture
  • 参数
  • shw
  • 省略
  • 宽度
  • 可选

得分解答快速导航

  • 帖主:loveyun
  • zyl910
  • csdngoodnight

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo