国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

快速對圖片進行濾光處理

2024-07-21 02:24:05
字體:
來源:轉載
供稿:網友


想快速地對指定圖片或區域進行濾光處理,常見的方法取出圖片數據,逐像素與指定濾光色進行and運算,很麻煩。還見過網上流傳的有用point或getpixel取點運算的,其低速可想而知。

其實利用bitblt的位運算,可高速完成這種操作,下面這個函數比數組運算方法可快10倍,比point或getpixel估計會快上千倍。

private type rect
        left as long
        top as long
        right as long
        bottom as long
end type
private declare function deleteobject lib "gdi32" (byval hobject as long) as long
private declare function createsolidbrush lib "gdi32.dll" (byval crcolor as long) as long
private declare function fillrect lib "user32.dll" (byval hdc as long, lprect as rect, byval hbrush as long) as long
private declare function bitblt lib "gdi32" (byval hdestdc as long, byval x as long, byval y as long, byval nwidth as long, byval nheight as long, byval hsrcdc as long, byval xsrc as long, byval ysrc as long, byval dwrop as long) as long

public sub filterrgb(dhdc as long, x as long, y as long, w as long, h as long, optional tc as long = &hffff00)
    dim tmphdc as memhdc, rc as rect, hbrush as long
    tmphdc = newmyhdc(dhdc, w, h)   '建立一個內存位圖
    rc.right = w
    rc.bottom = h
    hbrush = createsolidbrush(tc)
    fillrect tmphdc.hdc, rc, hbrush '用濾光色填充圖片,產生一個純色圖片
    deleteobject hbrush
    bitblt dhdc, x, y, w, h, tmphdc.hdc, 0, 0, vbsrcand   '繪入目標,并與目標進行and運算,達到濾光效果
    tmphdc = delmyhdc(tmphdc)
end sub

本篇中的公用函數newmyhdc、delmyhdc及相關結構與api聲明,可在以下文章中找到
http://blog.csdn.net/homezj/archive/2005/04/14/348001.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄河市| 铅山县| 同心县| 泾阳县| 沛县| 文成县| 得荣县| 无为县| 宁都县| 洪雅县| 砚山县| 屏东县| 麻栗坡县| 独山县| 元江| 广州市| 林口县| 阿勒泰市| 临城县| 巴南区| 兰西县| 雷波县| 依安县| 沙坪坝区| 彰化县| 福鼎市| 阳朔县| 岢岚县| 新沂市| 红河县| 临澧县| 苍溪县| 潮安县| 岳阳县| 宿州市| 三台县| 个旧市| 普格县| 麻江县| 定日县| 古田县|