線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2424
推到 Plurk!
推到 Facebook!

請問TMemorystream的使用方法?!

答題得分者是:RaynorPao
kenano
一般會員


發表:6
回覆:5
積分:2
註冊:2002-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-23 00:59:51 IP:140.118.xxx.xxx 未訂閱
請問大家: 我想將顯示在Panel上的圖讀出來作一些處理 我之前的方法是先到硬碟再讀到image上作分析 但是這樣速度變很慢 所以想請問大家,tmemorystream的用法 麻煩大家幫我解說一下,或是哪裡有相關的資料可以看~謝謝!!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-23 08:14:24 IP:203.73.xxx.xxx 未訂閱
引言: 請問大家: 我想將顯示在Panel上的圖讀出來作一些處理 我之前的方法是先到硬碟再讀到image上作分析 但是這樣速度變很慢 所以想請問大家,tmemorystream的用法 麻煩大家幫我解說一下,或是哪裡有相關的資料可以看~謝謝!!
kenano 你好: 請參考以下幾篇文章 > < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { TCanvas *csBuf; HDC hDC; csBuf=new TCanvas; hDC=GetDC(Panel1->Handle); csBuf->Handle=hDC; Image1->Width=Panel1->Width; Image1->Height=Panel1->Height; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), csBuf, Rect(0, 0, Panel1->Width, Panel1->Height)); // 在這裡分析你的 image Image1->Picture->Bitmap->SaveToFile("c:\\temp.bmp"); ReleaseDC(0, hDC); delete csBuf; } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2002/12/23 23:57:33
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
kenano
一般會員


發表:6
回覆:5
積分:2
註冊:2002-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-24 12:51:46 IP:140.118.xxx.xxx 未訂閱
備註: 可是我覺得你這個問題應該可以不用 TMemoryStream 吧 < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { TCanvas *csBuf; HDC hDC; csBuf=new TCanvas; hDC=GetDC(Panel1->Handle); csBuf->Handle=hDC; Image1->Width=Panel1->Width; Image1->Height=Panel1->Height; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), csBuf, Rect(0, 0, Panel1->Width, Panel1->Height)); // 在這裡分析你的 image Image1->Picture->Bitmap->SaveToFile("c:\\temp.bmp"); ReleaseDC(0, hDC); delete csBuf; } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2002/12/23 23:57:33 [/quote] 謝謝RaynorPao~ 因為我是想將CCD上捕捉到的某一畫面擷取下來分析 因為不太了解capFileSaveDIB所以只好這樣做 另外請教RaynorPao一個問題 當我將圖檔暫存至memorystream時 memorystream是以什麼資料型態紀錄這圖檔?! 還有它是紀錄每一個RGB的pixel值嗎?! 謝謝~
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-24 13:17:11 IP:203.73.xxx.xxx 未訂閱
引言: 另外請教RaynorPao一個問題 當我將圖檔暫存至memorystream時 memorystream是以什麼資料型態紀錄這圖檔?! 還有它是紀錄每一個RGB的pixel值嗎?!
kenano 你好: 有一種用來描述串流的方式~~叫做 BLOB (Binary Large Object) 它是用一個 BYTE*, 及一個 DWORD 來描述記憶體中的串流
BYTE *lpData; // 用來描述在記憶中的位置
DWORD dwLen;  // 用來描述串流的長度(以byte為單位)
而 BCB 中的 TMemoryStream 則把以上的做法進一步包裝成 class 了 至於在 TMemoryStream 中存放的資料格式是什麼呢?? 假如你讀入的是一個文字檔,它放在 TMemoryStream 裡面的樣子 就會跟你用 UltraEdit 打開那個文字檔看到的一樣(hex) 假如你讀入的是一個 Bitmap 也跟用 UltraEdit 打開那個 Bitmap file 看到的會是一樣的(hex) 另外~~並不一定要透過 TMemoryStream 來處理 Bitmap 的 RGB 請參考以下這篇文章的內容~~有 sample code
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-04-26 4:08:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!