通过COM对象将Delphi生成的位图返回到(ASP).Net
我们正在创建一个web应用程序,在浏览器界面中将等高线区域显示为位图 我们已经有了一个广泛的Delphi库,可以生成等高线,并可以将它们绘制到TCanvas上。我们希望能够尽可能地重复使用该代码 所以我们在Delphi中创建了一个COM对象,并使用它来生成轮廓。我在ASP.Net项目中添加了对该COM对象的引用,因此可以从.Net代码中访问它。到目前为止,这似乎效果不错 我现在遇到的问题是,尽可能快地将生成的TBitmap发送到ASP.Net端 我可以想到一些场景,但每种场景我都遇到了问题:通过COM对象将Delphi生成的位图返回到(ASP).Net,.net,delphi,com,bitmap,com-interop,.net,Delphi,Com,Bitmap,Com Interop,我们正在创建一个web应用程序,在浏览器界面中将等高线区域显示为位图 我们已经有了一个广泛的Delphi库,可以生成等高线,并可以将它们绘制到TCanvas上。我们希望能够尽可能地重复使用该代码 所以我们在Delphi中创建了一个COM对象,并使用它来生成轮廓。我在ASP.Net项目中添加了对该COM对象的引用,因此可以从.Net代码中访问它。到目前为止,这似乎效果不错 我现在遇到的问题是,尽可能快地将生成的TBitmap发送到ASP.Net端 我可以想到一些场景,但每种场景我都遇到了问题: 将
IStream
界面。问题是COM对象向导似乎不接受IStream
作为函数的返回值。另外,我不知道.Net是否会知道如何处理它,但我希望Interop包装器能够解决这个问题SAFEARRAY(byte)
(向导至少接受这一点),但是a)如何在Delphi端创建SAFEARRAY,以及b)如何在.Net中读取它TBitmap
转换为ipacture
接口,并返回该接口。至少,COM对象向导似乎支持IPacture。在这里,我真的不知道如何将TBitmap转换为IPacture(除了将其保存到流中,并从该流中创建IPacture,这似乎有点愚蠢,因为.Net代码无论如何都必须将其流式输出到浏览器)。同样,我不知道.Net将如何处理ipacture
,尽管我希望它将它映射到一个常规的图像
对象,然后可以通过响应
对象将其写出所以我的问题是:就性能而言,什么是前进的最佳方式,以及如何解决指出的问题?您可以编写一个Delphi COM对象,它拥有位图并可以返回位图句柄。您可以从TBitmap获取此句柄并将其强制转换为OLE_句柄。只要您持有对COM对象的引用,位图就有效。您可以编写一个Delphi COM对象,它拥有位图并可以返回位图句柄。您可以从TBitmap获取此句柄并将其强制转换为OLE_句柄。只要您持有对COM对象的引用,位图就会有效。我会在本机和托管世界之间传递一个HBITMAP
- 通过调用从Delphi
中分离句柄TBitmap
- 通过调用创建.net
位图
- 通过调用从Delphi
中分离句柄TBitmap
- 通过调用创建.net
位图