  | 
				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 文章: 2160
 
  第 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)
 
 | 	 
  | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |