請問TMemorystream的使用方法?! |
答題得分者是:RaynorPao
|
kenano
一般會員 發表:6 回覆:5 積分:2 註冊:2002-11-25 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問大家: 我想將顯示在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 發送簡訊給我 |
備註:
可是我覺得你這個問題應該可以不用 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 發送簡訊給我 |
引言: 另外請教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
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |