以Lockbits的方式訪問bitmap

2021-09-07 23:43:14 字數 1793 閱讀 2742

用bitmap.getpixel和bitmap.setpixel訪問畫素點實在是太慢了,必須要用lockbits的方式訪問記憶體才能改善,這裡貼乙個快速訪問bitmap每個畫素點的包裝類,是國外乙個老外寫的,感覺很好用。

public class lockbitmap

public int depth

public int width

public int height

public lockbitmap(bitmap source)

/// /// lock bitmap data

///

public void lockbits()

// lock bitmap and return bitmap data

bitmapdata = source.lockbits(rect, imagelockmode.readwrite,

source.pixelformat);

// create byte array to copy pixel values

int step = depth / 8;

pixels = new byte[pixelcount * step];

iptr = bitmapdata.scan0;

// copy data from pointer to array

marshal.copy(iptr, pixels, 0, pixels.length);

}catch (exception ex)

}/// /// unlock bitmap data

///

public void unlockbits()

catch (exception ex)

}/// /// get the color of the specified pixel

///

///

///

///

public color getpixel(int x, int y)

if (depth == 24) // for 24 bpp get red, green and blue

if (depth == 8)

// for 8 bpp get color value (red, green and blue values are the same)

return clr;

}/// /// set the color of the specified pixel

///

///

///

///

public void setpixel(int x, int y, color color)

if (depth == 24) // for 24 bpp set red, green and blue

if (depth == 8)

// for 8 bpp set color value (red, green and blue values are the same)

}public bool isvalidcoordinate(int x, int y)

}

還有乙個時間測算的類,可以計算**的時間差,跟stopwatch差不多
public class benchmark

}public static void start()

public static void end()

public static double getseconds()

}

以條件驅動的資料訪問方式

所謂 以條件驅動 其實是自己給起名稱,這種資料庫訪問方式和傳統持久化元件的操作方式有所差別。在傳統的資料訪問操作中先明確操作物件然後設定相關條件 但在本文中所在地提到的訪問方式是以條件為主導,就是根據你需要的情況編寫條件直接在這基礎上進行操作,並不需要顯式借助於某個容器,所有操作所需要支援的環境在條...

以Ajax的方式訪問資料庫

一 以ajax的方式顯示資料 我們都知道,如果用ajax程式去載入乙個動態頁,則載入的實際上是這個動態頁執行完畢後生成的靜態html 字串。1.以原有的格式顯示資料 header content type text html charset gb2312 include conn.php resul...

用c 以ado方式 遠端訪問ORACLE資料庫

第一次用oracle,很多理解可能存在錯誤。ado的具體使用方式就不詳細說了,鏈結oracle的鏈結串為 provider oraoledb.oracle user id 使用者名稱 password 密碼 persist security info true data source descrip...