c#调用Delphi动态库,pbitmapinfo 类型对应C#的什么类型?(求高手指点) 如果用intptr,那我怎么得到bitmap的 PBitmapinfo信息呢?因为是要作为参数进行传递 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 bdmh 于 2011-07-15 13:12:35 编辑 我已经不用delphi很多年找不到了var BFH: BITMAPFILEHEADER; pBitmapInfo: BITMAPINFO; ToFile: TFileStream; ucGrey: BYTE; i, J: Integer; begin lpwEncapsulateData := lpwEncapsulateData + 2; dwEncapsulateDataLen := dwEncapsulateDataLen - 6; FillMemory(@BFH, sizeof(BITMAPFILEHEADER), 0); if SaveDialog1.Execute then begin Cursor := crAppStart; BFH.bfType := $4D42; //文件头内容 BFH.bfSize := $051036; BFH.bfOffBits := $036; pBitmapInfo.bmiHeader.biSize := $028; pBitmapInfo.bmiHeader.biWidth := $0180; pBitmapInfo.bmiHeader.biHeight := $0120; pBitmapInfo.bmiHeader.biPlanes := $01; pBitmapInfo.bmiHeader.biBitCount := $018; pBitmapInfo.bmiHeader.biCompression := 0; pBitmapInfo.bmiHeader.biSizeImage := $051000; pBitmapInfo.bmiHeader.biXPelsPerMeter := $0EC4; pBitmapInfo.bmiHeader.biYPelsPerMeter := $0EC4; //文件头内容结束 ToFile.Create(SaveDialog1.FileName, fmCreate); ToFile.Write(BFH, sizeof(BFH)); if (pBitmapInfo.bmiHeader.biHeight > 0) then pBitmapInfo.bmiHeader.biHeight := 0 - pBitmapInfo.bmiHeader.biHeight; //使图像倒过来 ToFile.Write(pBitmapInfo.bmiHeader, sizeof(pBitmapInfo.bmiHeader)); for i := 0 to floor(dwEncapsulateDataLen / 2 - 1) do //对返回的384*288个图像数据灰度进行存储。 begin ucGrey := (@(lpwEncapsulateData + i) shr 8); for j := 0 to 2 do ToFile.Write(ucGrey, 1); ucGrey := LOBYTE((lpwEncapsulateData + i)); for j := 0 to 2 do ToFile.Write(ucGrey, 1); end; ToFile.Destroy; end; Cursor := crDefault; 请问C#中怎么写VC6的事件接收器 [多线程问题]这个多线程该怎么写? 百思不得其解 http://csinjoin.hnu.cn/3.jpg 先不放分,搞定后例外ID给180 oracle中的日期查询问题,各位帮我看看,谢谢啦 如何包装成伪绿色软件? SqlDataAdapter.Fill 的问题 如何查看已经建立的存储过程,想拿出来修改一下? 求对元数据的理解(在线)感谢中----- 请问谁有王凯明的“浅析C#中的套接字编程”的原码,谢谢了!!!! 关于引用类型! Xtragrid控件 行不能选择并且颜色变灰色!!! 以下代码用线程怎么操作
我已经不用delphi很多年找不到了
var
BFH: BITMAPFILEHEADER;
pBitmapInfo: BITMAPINFO;
ToFile: TFileStream;
ucGrey: BYTE;
i, J: Integer;
begin
lpwEncapsulateData := lpwEncapsulateData + 2;
dwEncapsulateDataLen := dwEncapsulateDataLen - 6; FillMemory(@BFH, sizeof(BITMAPFILEHEADER), 0); if SaveDialog1.Execute then
begin
Cursor := crAppStart;
BFH.bfType := $4D42; //文件头内容
BFH.bfSize := $051036;
BFH.bfOffBits := $036; pBitmapInfo.bmiHeader.biSize := $028;
pBitmapInfo.bmiHeader.biWidth := $0180;
pBitmapInfo.bmiHeader.biHeight := $0120;
pBitmapInfo.bmiHeader.biPlanes := $01;
pBitmapInfo.bmiHeader.biBitCount := $018;
pBitmapInfo.bmiHeader.biCompression := 0;
pBitmapInfo.bmiHeader.biSizeImage := $051000;
pBitmapInfo.bmiHeader.biXPelsPerMeter := $0EC4;
pBitmapInfo.bmiHeader.biYPelsPerMeter := $0EC4; //文件头内容结束 ToFile.Create(SaveDialog1.FileName, fmCreate);
ToFile.Write(BFH, sizeof(BFH));
if (pBitmapInfo.bmiHeader.biHeight > 0) then
pBitmapInfo.bmiHeader.biHeight := 0 - pBitmapInfo.bmiHeader.biHeight;
//使图像倒过来
ToFile.Write(pBitmapInfo.bmiHeader, sizeof(pBitmapInfo.bmiHeader));
for i := 0 to floor(dwEncapsulateDataLen / 2 - 1) do
//对返回的384*288个图像数据灰度进行存储。
begin
ucGrey := (@(lpwEncapsulateData + i) shr 8);
for j := 0 to 2 do
ToFile.Write(ucGrey, 1);
ucGrey := LOBYTE((lpwEncapsulateData + i));
for j := 0 to 2 do
ToFile.Write(ucGrey, 1);
end;
ToFile.Destroy;
end;
Cursor := crDefault;