簡體   English   中英

setDIbitstodevice Turbo C++

[英]setDIbitstodevice Turbo C++

我的程序使用setDIbitstodevice作為相機。
我看到代碼寫成:

SetDIBitsToDevice( PaintBox->Canvas->Handle, 0, 0, 160, 120,
    0, 0, 0, 120,
    Image, 
    ( LPBITMAPINFO )&mapHead, DIB_RGB_COLORS );

和:

Image = new unsigned char [ 160 * 120 * 4 ]

我不知道這是什么意思。 有人告訴我,如果我將Image更改為其他形式的unsigned char ,圖片顯示也會改變,但我這樣做了,但我什么也得不到。

請指教,謝謝。

unsigned char 在 turbo C++ 中的大小為一個字節,因此“Image = new...”行將一些 memory 分配給 Image,該圖像寬 160 像素,高 120 像素,深 4 字節。 紅色、綠色、藍色和 alpha 通道的 4 個字節各為一個字節(盡管這些不支持 alpha 通道,所以我認為這不太正確 - 但它分配的 memory 比必要的多,所以它不會崩潰,但它可能會浪費內存)。

現在 SetDIBitsToDevice 獲取 Image 中的像素並將其顯示到畫框(通過句柄)。 Tee 參數是目標的大小等(參見http://msdn.microsoft.com/en-us/library/dd162974(VS.85).aspx )。 如果您想拉伸 bitmap(即更改顯示大小),請查看 StretchDIBits http://msdn.microsoft.com/en-us/library/dd145121(v=VS.85).aspx

hth

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM