CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

PictureBox怎么能适应扫描图片

楼主juky_huang(家锐)2006-02-06 10:59:45 在 VB / 数据库(包含打印,安装,报表) 提问

我扫描了一幅图片,使用的是300dpi的线数来做的,现在把扫描的图片直接加入到图片框里,出现图片变的很大,我想了解图片大小和VB里面单位关系的换算,可以让扫描的图片能很好的在VB里面查看 问题点数:20、回复次数:8Top

1 楼WallesCai(女人之美,在于蠢得无怨无悔,男人之美,在于撒谎撒得白日见鬼)回复于 2006-02-06 13:03:16 得分 0

set   the   scalemode   of   the   picturebox   to   "pixel"  
  then   use   the   paintpicture   to   resize   the   image.Top

2 楼province_(雍昊)回复于 2006-02-06 18:18:14 得分 0

或者用IMAGE来显示,AUTOSTRETCH设为真。Top

3 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2006-02-06 20:31:08 得分 0

一般屏幕分辨率是96dpi,你用ScaleX、ScaleY换算一下就行  
   
   
   
     
  ScaleX、ScaleY   方法  
               
   
  用以将   Form,PictureBox   或   Printer   的宽度或高度值从一种   ScaleMode   属性的度量单位转换到另一种。不支持命名参数。  
   
  语法  
   
  object.ScaleX   (width,   fromscale,   toscale)  
   
  object.ScaleY   (height,   fromscale,   toscale)  
   
  ScaleX   和   ScaleY   方法的语法包含如下部分:  
   
  部分   描述    
  object   可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略   object,则带有焦点的   Form   对象缺省为   object。    
  width   必需的。为   object   指定被转换的度量单位的数量。    
  height   必需的。为   object   指定被转换的度量单位的数量。      
  fromscale   可选的。一个常数或数值,按照下列设置中的描述,指定   object   的   width   或   height   从哪一种坐标系统转换。fromscale   可取的数值与   ScaleMode   属性的数值加上   HiMetric   的新数值相同。    
  toscale   可选的。一个常数或数值,按照下列“设置值”中的描述,指定   object   的   width   或   height   转换到哪一种坐标系统。toscale   可取的数值与   ScaleMode   属性的数值加上   HiMetric   的新数值相同。    
   
   
  设置值  
   
  用于   fromscale   和   toscale   设置值有:  
   
  常数   值   描述    
  vbUser   0   用户定义:指示   object   的宽度和高度设置为自定义值。    
  vbTwips   1   缇(每逻辑英寸   1440   缇;每逻辑厘米   567   缇)。    
  vbPoints   2   磅(每逻辑英寸   72   点)。    
  vbPixels   3   像素   (显示器或打印机分辨率的最小单位)。    
  vbCharacters   4   字符(水平   =   每单位   120   缇,垂直   =   每单位   240   缇)。    
  vbInches   5   英寸    
  vbMillimeters   6   毫米    
  vbCentimeters   7   厘米    
  vbHimetric   8   HiMetric。如果省略   fromscale,则   HiMetric   为缺省值。    
  vbContainerPosition   9   决定控件位置。    
  vbContainerSize   10   决定控件大小。    
   
   
  说明  
   
  ScaleX   和   ScaleY   方法按   fromscale   指定的度量单位取值(width   或   height),并将它转换为   toscale   指定的度量单位下相应的值。  
   
  也可以结合   PaintPicture   方法使用   ScaleX   和   ScaleY。  
  Top

4 楼juky_huang(家锐)回复于 2006-02-07 01:55:26 得分 0

我用过换算的方法,但是图片还是不变  
  可能是我没有说清楚,我现在的图片是扫描进去的,加载到PictureBox的时候变的很大,PictureBox我已经设置为AutoSize为Ture了.我先知道的是怎么显示这个A4扫描的图片能放到图片框,并且是成比例缩放的,就象我使用其他看图软件,它不会变的很大Top

5 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2006-02-07 12:00:52 得分 0

算好后再用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

6 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2006-02-07 12:01:00 得分 20

在任意位置绘制图形  
   
   
  使用   PaintPicture   方法,可以在窗体、图片框和   Printer   对象上的任何地方,绘制图形。PaintPicture   方法的语法是:  
   
  [object.]PaintPicture   pic,   destX,   destY[,   destWidth[,   destHeight[,   srcX   _  
   
  [,   srcY[,   srcWidth[,   srcHeight[,   Op]]]]]]]  
   
  目标   object   指的是窗体、图片框或   Printer   对象,这些地方都是   pic   图片表现的处所。如果   object   被忽略了,则认为指定的就是当前的窗体。pic   参数必须是一个图片对象,它是由窗体或控件的   Picture   属性决定。  
   
  destX   和   destY   参数,是按照   objec   的   ScaleMode,该图象将出现的水平和垂直位置。destWidth   和   destHeight   参数是可选项,用来设置在   object   目标中该图象的宽度和高度。  
   
  srcX   和   srcY   参数是可选项,用来定义   pic   中裁剪区左上角的   x   和   y   坐标。  
   
  可选的   Op   参数用来定义当在目标   object   上绘图时,在图片上执行的光栅操作(例如,AND   和   XOR)。  
   
  PaintPicture   方法可代替   BitBlt   Windows   API   函数,在将矩形图形块从一个地方移到任意另一地方时,它可执行广泛的各种操作。  
   
  例如,可以使用   PaintPicture   方法生成同一位图的多份副本,并将它们平铺在窗体上。使用这种方法,比在窗体上移动图片控件要快。下列代码是用来平铺图片控件的   100   份拷贝,并且通过给   destWidth   设置一个负值,可以使每张图片进行水平翻转。  
   
  For   i   =   0   To   10  
        For   j   =   0   To   10  
              Form1.PaintPicture   picF.Picture,   j   *   _  
                    picF.Width,   i   *   picF.Height,   _  
                    picF.Width,   -picF.Height  
  Next   j,   i  
   
  详细信息   请参阅《语言参考》的“PaintPicture   方法”。  
  Top

7 楼WallesCai(女人之美,在于蠢得无怨无悔,男人之美,在于撒谎撒得白日见鬼)回复于 2006-02-07 14:53:01 得分 0

算啦,如果只是显示,没有编辑图片的需要的话,就直接使用IMAGE控件来加载图片,把IMAGE的STRETCH属性设为TRUE,然后就可以通过调整控件大小来改变图片的显示大小了.  
   
  Top

8 楼juky_huang(家锐)回复于 2006-02-09 09:03:46 得分 0

to:zyl910(910:分儿,我又来了!)  
  我最后就是通过PaintPicture来实现你说的方法的,由于我要打印A4的纸,所以我把PictureBox的大小先设置为A4,然后使用PaintPicture来实现图片的缩放!  
   
  picPrint.ScaleMode   =   vbMillimeters       '转换坐标系,毫米  
  picPrint.Width   =   29.7   *   567                     'A4大小的纸转化为Twip  
  picPrint.Height   =   21   *   567                       'A4大小的纸转化为Twip  
  picPrint.PaintPicture   imgList.ListImages(iCurrentPage).Picture,   0,   0,   297,   210     '绘制A4大小的图片  
   
  打印的时候也是相同,不过绘制的对象是Printer对象就可以了  
   
  最后把PictureBox的AutoRedraw变成Auto这样就不会在离开焦点时重绘  
   
  再次感谢zyl910Top

相关问题

  • 请问如何让图片来适应picturebox的大小...
  • 怎么使图片经过拉伸而适应picturebox的大小(很菜是吧!!)
  • 请教怎样让图片适应PictureBox的大小,就让图片成比例缩小??
  • PictureBox的sizemode设置为StretchImage了,为何图片还是不能缩放适应picturebox的大小?
  • 如何用VB控制扫描仪去扫描图片??
  • 扫描图片与打印图片问题
  • 关于从扫描仪扫描图片到flash中使用的问题
  • 请教大侠:用delphi控制扫描仪实现图片扫描
  • 我用Acer 5100U扫描仪扫描出的图片怎么跟所扫的图片的质量相差那么远呢??
  • pictureBox显示图片问题

关键词

  • 属性
  • 控件
  • 数值
  • 转换
  • paintpicture
  • 参数
  • 省略
  • 可选
  • picturebox
  • scalemode

得分解答快速导航

  • 帖主:juky_huang
  • zyl910

相关链接

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

广告也精彩

反馈

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