pb 粘贴板取圖,并將其保存! 請教,高手請進

以下是我仿胖無極的PB代碼, 但生成的圖片無法預覽! 請賜教! Tks!

 

ulong hbmp, dwBPP, dwNumColors
long   ll_hdc, ll_mem, mybitmap
bitmap bmp
blob{14} lbl_header
blob{40} lbl_info
blob b_imagedata
ulong dwImageSize


n_api.OpenClipBoard(0)
hbmp = n_api.GetClipBoardData(2)
ll_hdc = getdc( handle(aw_win)) //aw_win: 為傳入的父窗體參數
ll_mem = CreateCompatibleDC(ll_hdc)


SelectObject(ll_mem, hbmp)
SetMapMode(ll_mem, GetMapMode(ll_hdc))

GetObject(hbmp, 24,  ref bmp)
BitBlt(ll_hdc, 0, 0, bmp.bmWidth, bmp.bmHeight, ll_mem, 0, 0, SRCCOPY)


mybitmap = CreateCompatibleBitmap (ll_hdc,bmp.bmWidth,bmp.bmHeight)


BitmapInfo lstr_Info
BitmapFileHeader lstr_Header

dwBPP     = n_api.GetDeviceCaps(ll_hdc, n_api.BITSPIXEL)
if dwBPP <= 8 then
    dwNumColors = n_api.GetDeviceCaps(ll_hdc, n_api.NUMCOLORS)
else
    dwNumColors = 0
end if

dwImageSize = bmp.bmWidth * bmp.bmHeight * dwBPP / 8

//填充BitmapFileHeader
lstr_Info.bmiheader.biSize     = 40
lstr_Info.bmiheader.biWidth    = bmp.bmWidth
lstr_Info.bmiheader.biHeight    = bmp.bmHeight
lstr_Info.bmiheader.biPlanes    = 1
lstr_Info.bmiheader.biBitCount    =  dwBPP
lstr_Info.bmiheader.biCompression  = 0
lstr_Info.bmiheader.biSizeImage   = dwImageSize
lstr_Info.bmiheader.biXPelsPerMeter = 0
lstr_Info.bmiheader.biYPelsPerMeter = 0
lstr_Info.bmiheader.biClrUsed   = dwNumColors
lstr_Info.bmiheader.biClrImportant  = dwNumColors


b_imagedata = blob(space(dwImageSize))
GetDIBits(ll_hdc, mybitmap, 0, bmp.bmHeight,ref  b_imagedata, lstr_Info, 0)

lstr_Header.bfType[1] = 'B'
lstr_Header.bfType[2] = 'M'
lstr_Header.bfSize  = dwImageSize + &
        14/*sizeof(bitmapfileheader)*/ + &
        40/*sizeof(bitmapinfoheader)*/+&
        dwNumColors * 4

lstr_Header.bfReserved1 = 0
lstr_Header.bfReserved2 = 0

lstr_Header.bfOffBits = 14/*sizeof(bitmapfileheader)*/ + &
        40/*sizeof(bitmapinfoheader)*/+&
                                    dwNumColors * 4

 

CopyBitmapFileHeader(lbl_header, lstr_Header, 14/*sizeof(bitmapfileheader)*/ )

CopyBitmapInfo(lbl_Info, lstr_Info, 40/*sizeof(bitmapinfoheader)*/)

 

b_imagedata = lbl_header + lbl_info + b_imagedata

save2file('d:/zls.bmp', b_imagedata) //此處將Blob數據寫入到文件中


DeleteObject(mybitmap)
DeleteDC(ll_mem)
n_api.CloseClipBoard()

return true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值