Me.Top = 0
    Me.Left = 0
    Me.Width = Screen.Width
    Me.Height = Screen.Height
    Picture1.Width = Screen.Width + 30
    Picture1.Height = Screen.Height + 30
    BitBlt Picture1.hDC, 0, 0, Screen.Width + 30, Screen.Height + 30, GetDC(0), 0, 0, vbSrcCopy
    Set Form1.Picture = Picture1.Image上面这个截屏后怎么把Picture1.Image转成黑白图像放进Form1.Picture
也就是实现XP点关闭计算机后出现的效果

解决方案 »

  1.   

    主要是图像处理算法的问题。不懂。
    google一下还是有的
      

  2.   

    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End TypePrivate Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
    Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) As LongPrivate bybits(1 To 16) As Byte
    Private hBitmap As Long, hBrush As Long
    Private hDesktopWnd As Long
    '注释:将图变暗,如同待关机一般
    Private Sub Command1_Click()
    Dim rop As Long, res As Long
    Dim hdc5 As Long, width5 As Long, height5 As Long
    '注释: 如果只要让Picture1有效果将底下三行unMark取代 hdc5, width5, height5三个值
    '注释: hdc5 = Picture1.hdc
    '注释: width5 = Picture1.ScaleWidth
    '注释: height5 = Picture1.ScaleHeight
    '
    '注释: 底下三行设定整个萤幕都暗下来
    hdc5 = GetDC(0)
    width5 = Screen.Width \ Screen.TwipsPerPixelX
    height5 = Screen.Height \ Screen.TwipsPerPixelYrop = &HA000C9 ' 注释:与原图做and运算
    Call SelectObject(hdc5, hBrush)
    res = PatBlt(hdc5, 0, 0, width5, height5, rop)
    Call DeleteObject(hBrush)
    '注释: 如果只暗picture1则底下这一行要起来
    res = ReleaseDC(0, hdc5)
    End Sub
    '注释: 回复原本的画面
    Private Sub Command2_Click()
    Dim aa As Long
    '注释: 如果只暗picture1则底下这一行要unMark起来
    '注释: Picture1.Refresh
    '
    '注释: 如果只暗picture1则底下这一行要起来
    aa = InvalidateRect(0, 0, 1)
    End SubPrivate Sub Form_Load()
    Dim ary
    Dim i As Long
    ary = Array(&H55, &H0, &HAA, &H0, _
                 &H55, &H0, &HAA, &H0, _
                 &H55, &H0, &HAA, &H0, _
                 &H55, &H0, &HAA, &H0)
    For i = 1 To 16
         bybits(i) = ary(i - 1)
    Next i
    hBitmap = CreateBitmap(8, 8, 1, 1, bybits(1))
    hBrush = CreatePatternBrush(hBitmap)
    Picture1.ForeColor = RGB(0, 0, 0)
    Picture1.BackColor = RGB(255, 255, 255)
    Picture1.ScaleMode = 3
    End Sub
      
      

  3.   

    黑白图像的rgb值是一样的。怎么把rgb不一样的彩色画面变成rgb一样的黑白画面,这个有很多方式,不同方式出来的效果也一样,ps里面的颜色通道就能根据rgb通道去色