lpBitsInfo BITMAPINFO,对lpBits DIB的格式和颜色进行描述的一个结构 
wUsage Long,下述常数之一 
   DIB_PAL_COLORS 颜色表是一个整数数组,其中包含了与目前选入hdc设备场景的调色 板相关的索引 
    DIB_RGB_COLORS 颜色表包含了RG颜色 
dwRop Long,欲进行的光栅运算 
谁知道lpbitsinfo和wUsage这两个参数应该怎么设??

解决方案 »

  1.   

    我在编程时想用这个api声明,但是不知道里边的参数怎么设?谁能帮忙??
      

  2.   

    去http://vbworld.sxnw.gov.cn/vbapi/detail/SetStretchBltMode.htm看看
      

  3.   

    VB应用程序中一个很重要而且常用的输出对象就是打印机对象,程序中用关键字Printer来访问它。VB提供了三种打印机输出方式:(1)将文本用Print方法直接输出到打印机;(2)将绘制的图形用Line、Circle、Pset等方法输出到打印机;(3)将所欲输出的信息送往窗体,然后将窗体用PrintForm方法打印出来。显然,仅用VB为打印机对象所提供的方法来按照用户的要求灵活地打印位图是十分困难的。笔者在工作实践中,运用Windows API函数解决了这一难点。1.建立含有如下控件的窗体
    图片框 Picture1 ScaleMode=3 '装载用户需要打印的位图
    命令按钮 Command1 '进行打印操作2.建立模块窗口
    在模块窗口加入程序所使用的Windows API函数声明、常量声明及全局变量声明。
    Type BITMAP '14 bytes
    bmType As Integer
    bmWidth As Integer
    bmHeight As Integer
    bmWidthBytes As Integer
    bmPlanes As String * 1
    bmBitsPixel As String * 1
    bmBits As Long
    End Type
    Type BITMAPINFOHEADER '40 bytes
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
    End Type
    Type BITMAPINFO 'Varies
    bmiHeader As BITMAPINFOHEADER
    bmiColors As String * 128
    End Type
    Global Const srccopy = &HCC0020 ' (DWORD) dest = source
    Global Const BI_RGB = 0&
    Global Const GMEM_MOVEABLE = &H2
    Global Const DIB_RGB_COLORS = 0
    Global Const RC_DIBTODEV = &H200 ' supports DIBitsToDevice
    Global Const RASTERCAPS = 38 ' Bitblt capabilities
    Declare Function GlobalAlloc% Lib "Kernel" (ByVal wFlags%, ByVal dwBytes&)
    Declare Function CreateCompatibleDC% Lib "GDI" (ByVal hDC%)
    Declare Function CreateDIBitmap% Lib "GDI" (ByVal hDC%,lpInfoHeader As 
    BITMAPINFOHEADER, ByVal dwUsage&, ByVal lpInitBits$, lpInitInfo As 
    BITMAPINFO, ByVal wUsage%)
    Declare Function CreateDIBitmapBynum% Lib "GDI" Alias "CreateDIBitmap" (ByVal hDC%, 
    lpInfoHeader As BITMAPINFOHEADER, ByVal dwUsage&, ByVal lpInitBits&, 
    lpInitInfo As BITMAPINFO, ByVal wUsage%)
    Declare Function DeleteDC% Lib "GDI" (ByVal hDC%)
    Declare Function GlobalFree% Lib "Kernel" (ByVal hMem%)
    Declare Function GlobalLock& Lib "Kernel" (ByVal hMem%)
    Declare Function GlobalUnlock% Lib "Kernel" (ByVal hMem%)
    Declare Function GetDIBits% Lib "GDI" (ByVal aHDC%, ByVal hBitmap%, ByVal nStartScan%, 
    ByVal nNumScans%, ByVal lpBits$, lpBI As BITMAPINFO, ByVal wUsage%)
    Declare Function GetDIBitsBynum% Lib "GDI" Alias "GetDIBits" (ByVal HDC%, ByVal 
    hBitmap%, ByVal nStartScan%, ByVal nNumScans%, ByVal lpBits&, lpBI As 
    BITMAPINFO, ByVal wUsage%)
    Declare Function SetDIBits% Lib "GDI" (ByVal aHDC%, ByVal hBitmap%,ByVal nStartScan%, 
    ByVal nNumScans%, ByVal lpBits$,lpBI As BITMAPINFO, ByVal wUsage%)
    Declare Function SetDIBitsBynum% Lib "GDI" Alias "SetDIBits" (ByVal HDC%, ByVal 
    hBitmap%, ByVal nStartScan%, ByVal nNumScans%,ByVal lpBits&, lpBI As 
    BITMAPINFO, ByVal wUsage%)
    Declare Function StretchDIBits% Lib "GDI" (ByVal hDC%, ByVal x%, ByVal y%, ByVal dX%, 
    ByVal dY%, ByVal SrcX%, ByVal SrcY%, ByVal wSrcWidth%, ByVal wSrcHeight%, 
    ByVal lpBits$, lpBitsInfo As BITMAPINFO, ByVal wUsage%, ByVal dwRop&)
    Declare Function StretchDIBitsBynum% Lib "GDI" Alias "StretchDIBits" (ByVal hDC%, ByVal 
    x%, ByVal y%, ByVal dX%, ByVal dY%, ByVal SrcX%, ByVal SrcY%, ByVal 
    wSrcWidth%, ByVal wSrcHeight%, ByVal lpBits&, lpBI As BITMAPINFO, ByVal 
    wUsg%, ByVal dwR&)3.编写打印位图子程序
    在模块窗口中,编写打印位图子程序,程序代码清单如下:
    Sub PrintBitMap (ByVal hDC%, ByVal x1%, ByVal y1%, ByVal wx%, ByVal hy%)
    Dim Bi As BITMAPINFO
    Dim DCtemp%
    Dim Bufsize&
    Dim Bm As BITMAP
    Dim Ghnd%
    Dim Gptr&
    Dim Di%
    DCtemp% = CreateCompatibleDC(Picture1.hDC)
    Bi.bmiHeader.biSize = 40
    Bi.bmiHeader.biWidth = Picture1.ScaleWidth
    Bi.bmiHeader.biHeight = Picture1.ScaleHeight
    Bi.bmiHeader.biPlanes = 1
    Bi.bmiHeader.biBitCount = 4
    Bi.bmiHeader.biCompression = BI_RGB
    Ghnd% = GlobalAlloc(GMEM_MOVEABLE, Bufsize&)
    Gptr& = GlobalLock&(Ghnd%)
    Di%=GetDIBitsBynum%(DCtemp%,Picture1.Picture,0,
    Picture1.ScaleHeight,Gptr&,Bi,
    DIB_RGBCOLORS)
    Di%=StretchDIBitsBynum(hDC%, x1, y1, wx, hy,0,0,
    Picture1.ScaleWidth,
    Picture1.ScaleHeight,Gptr&,Bi,DIB_RGB_COLORS, SRCCOPY)
    Di% = GlobalUnlock(Ghnd%)
    Di% = GlobalFree(Ghnd%)
    Di% = DeleteDC%(DCtemp%)
    End Sub4.位图的打印
    在所建窗体上,双击命令按扭Command1,进入窗体Command1_Click事件代码窗口:
    Sub Command1_Click ( )
    PrintBitMap CInt(Printer.hDC), x1, y1, wx, hy
    Printer.NewPage
    Printer.EndDoc
    End Sub
    以上程序在Visual Basic 3.0环境下调试通过,能够在大多数打印机上成功地打印位图。
      

  4.   

    to bydisplay:
    我怎么在msdn里查不到StretchDIBitsBynum这个函数?
    请问有一副bmp位图,如何将其全屏幕显示?用stretchdibits可以吗?
      

  5.   

    应为:Public Declare Function StretchDIBits Lib "gdi32" Alias "StretchDIBits" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
    可以
    看看
    http://www.freewebs.com/ztsoft/jishu/jishuvc1.htm
      

  6.   

    【声明】
    Public Declare Function StretchDIBits Lib "gdi32" Alias "StretchDIBits" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
    【说明】
    将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景。这个函数在设备场景中定义了一个目标矩形,用于接收位图数据。它也在DIB中定义了一个源矩形,以便从中提取数据。根据设备场景的StretchBlt模式(由SetStretchBltMode函数决定),源矩形会根据需要调整,以便符合目标矩形的要求
    【返回值】
    Long,如函数执行成功,返回欲复制的扫描线的数量;如返回常数GDI_ERROR,表示出错
    【参数表】
      hdc ------------  Long,一个设备场景的句柄。该场景用于接收位图数据  x,y ------------  Long,用逻辑坐标表示的目标矩形的起点  dx,dy ----------  Long,目标矩形的宽度及高度,以逻辑坐标表示  SrcX,SrcY ------  Long,用设备坐标表示的源矩形在DIB中的起点  wSrcWidth,wSrcHeight -  Long,源矩形的宽度与高度,用设备坐标表示。如其中有一个参数的符号(指正负号)与对应的目标参数不符,位图就会在对应的轴上作镜像转换  lpBits ---------  Any,指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据;这种格式是由lpBitsInfo指定的  lpBitsInfo -----  BITMAPINFO,对lpBits DIB的格式和颜色进行描述的一个结构  wUsage ---------  Long,下述常数之一
      DIB_PAL_COLORS
      颜色表是一个整数数组,其中包含了与目前选入hdc设备场景的调色板相关的索引
      DIB_RGB_COLORS
      颜色表包含了RG颜色  dwRop ----------  Long,欲进行的光栅运算
      

  7.   

    如果是这样的话
    很有必要先好好地搞清楚GDI部分API,以及VB中stdPicture对象是怎么回事
      

  8.   

    BITMAPINFO就是bmp文件的头文件呀stretchdibits 可以做到全屏显示的,我还是觉得这种对指针运用为主要的api函数
    用vc调用好的多。
      

  9.   

    我有一个数组content(),里边存放的是一副图片的二进制信息,我想将该图片信息全屏显示
    ,是不是用这个函数可以实现?怎么实现?里边的参数应该怎么写??
    大家快帮忙想想.