|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
小桑•無痕
註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 1 樓
|
發表於: 星期一 七月 21, 2003 5:42 pm 文章主題: 請問如何在 VFP 中製作 BMP 檔 |
|
|
請問 FOXPRO 有沒有辦法動態產生一個 BMP 檔? |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2157
第 2 樓
|
發表於: 星期一 七月 21, 2003 7:06 pm 文章主題: |
|
|
利用From來畫線條或顯示圖片, 再使用這裡提供的工具,http://vfp.sunyear.com.tw/viewtopic.php?t=37
將FORM轉成圖檔即可. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
小桑•無痕
註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 3 樓
|
發表於: 星期一 七月 21, 2003 10:06 pm 文章主題: |
|
|
謝謝 Garfield ...
小弟已找到做不出BMP檔的原因...
因為小弟沒注意到這一段「the bmp image data is bit packed but every line must end on a dword boundary - if that not the case, it must be padded with zeroes. 」 ,所以做出來的BMP檔才會時好時壞。
BMP檔格式參閱http://andrew.sc.ncyu.edu.tw/zip/Bmp1.htm |
|
回頂端 |
|
|
小桑•無痕
註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 4 樓
|
發表於: 星期一 七月 21, 2003 10:19 pm 文章主題: |
|
|
附上我的測試程式...
如果大家有其他較方便的做法,請多指教,QQ。
代碼: |
PUBLIC gnErrFile
LOCAL cFileName,nX,nY,nZeroCode
LOCAL I
nX = 33
nY = 60
nZeroCode = MOD(4 - MOD(nX * 3,4),4)
***** 製作圖檔 1A.BMP
cFileName = '1A.BMP'
gnErrFile = FCREATE(cFileName)
FWRITE(gnErrFile,BMPHAND(nX,nY,24))
FOR I = 1 TO nY
FWRITE(gnErrFile,REPLICATE(RGBCODE(255,150,100),nX) + REPLICATE(CHR(00),nZeroCode))
NEXT I
FCLOSE(gnErrFile)
RETURN
***** BMP 檔頭
FUNCTION BMPHAND(nX,nY,nbiBitCount)
LOCAL nBMPSize,cCODE,nZeroCode
nZeroCode = MOD(4 - MOD(nX * 3,4),4)
nBMPSize = nX * nY * 3 + nY * nZeroCode
cCODE = "BM" + DWORD(nBMPSize+54) + WORD(00) + WORD(00) + DWORD(54) + DWORD(40) + ;
DWORD(nX) + DWORD(nY) +WORD(1) + WORD(24) + DWORD(0) + ;
DWORD(nBMPSize) + DWORD(3780) + DWORD(3780) + DWORD(0) + ;
DWORD(0)
RETURN(cCODE)
ENDFUNC
***** 轉換格式成 WORD
FUNCTION WORD(nCODE)
LOCAL cCODE,nAX,nBX
nAX = INT(nCODE/256)
nBX = MOD(nCODE,256)
cCODE = CHR(nBX) + CHR(nAX)
RETURN(cCODE)
ENDFUNC
***** 轉換格式成 DWORD
FUNCTION DWORD(nCODE)
LOCAL cCODE,nAX,nBX
nAX = WORD(INT(nCODE/65536))
nBX = WORD(MOD(nCODE,65536))
cCODE = nBX + nAX
RETURN(cCODE)
ENDFUNC
***** 轉換格式成 RGB 24 Bits
FUNCTION RGBCODE(nR,nG,nB)
LOCAL cCODE
cCODE = CHR(nB) + CHR(nG) + CHR(nR)
RETURN(cCODE)
|
|
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|