国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴彦淖尔市| 夏河县| 松溪县| 徐汇区| 郯城县| 和田县| 九江市| 肇源县| 綦江县| 海晏县| 彝良县| 垫江县| 佛山市| 铜鼓县| 永春县| 安达市| 安多县| 烟台市| 华宁县| 讷河市| 平昌县| 晋城| 栾川县| 精河县| 溧阳市| 广安市| 女性| 靖宇县| 松溪县| 保定市| 无为县| 衡东县| 邻水| 溧水县| 崇礼县| 永德县| 丹凤县| 额济纳旗| 连平县| 达尔| 讷河市|