易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi图像处理

    Delphi的TCanvas以及派生类提供了显示TGraphic图像的方法Draw,其实这个方法本身并没有显示图像的功能,只是反过来调用了一下TGraphic的Draw方法。TGraphic本身是个抽象类,其Draw方法也是个纯虚方法,所以TGraphic的所有派生类必须提供一个具体的Draw方法。TGraphic的主要派生类TBitmap也有一个Draw方法,但是该方法只能利用其Transparent属性显示透明背景图像,而不能正确显示带Alpha通道的32位图像,即使Delphi2009以上版本的TGraphic增添了一个SupportsPartialTransparency属性,但TBitmap也还是没法直接显示ARGB像素格式的图像,因为TBitmap调用的是Windows API的AlphaBlend函数,该函数似乎只能显示PARGB格式像素的图像,而且TGraphic的SupportsPartialTransparency属性还是只读性质的。
    GDI+的TGpGraphics的系列DrawImage方法画ARGB32位图像倒是很好的,但如果图像真的含Alpha信息时,显示的速度却是较慢,大家可以用2张较大的图片试一下,一张含Alpha,一张不含Alpha,对比一下就知道了。
    因为本系列图像处理过程中有多个方法会使Alpha分量发生变化,即使该图像原来不含Alpha信息,所以有必要写图像显示过程。而且,如果在应用程序中只是需要显示处理过的图像,就不必再将TImageData类型转换为TGraphic或者TGpBitmap了,直接使用本文的显示过程无疑是很方便的。
    本文的图像显示过程是利用图像合成过程(见《Delphi图像处理 -- 图像合成》)、图像缩放过程《Delphi图像处理 -- 图像缩放》及几个Windows API来完成的,下面是具体代码:
过程定义:
// 画图像数据到Canvas,Alpha为图像的不透明度(0 - 1)。
procedure DrawImage(Canvas: TCanvas; x, y: Integer;
Data: TImageData; Alpha: Single = 1.0); overload;
// 拉伸画图像数据到Canvas,Alpha为图像的不透明度(0 - 1)。
procedure DrawImage(Canvas: TCanvas; x, y, Width, Height: Integer;
Data: TImageData; Alpha: Single = 1.0); overload;
procedure DrawImage(Canvas: TCanvas; LayoutRect: TRect;
Data: TImageData; Alpha: Single = 1.0); overload;
procedure DrawImage(Canvas: TCanvas; LayoutRect: TGpRect;
Data: TImageData; Alpha: Single = 1.0); overload;
实现代码:
procedure DrawImage(Canvas: TCanvas; x, y: Integer; Data: TImageD


相关文档:

Delphi图像处理

前言
    尽三年来,本人陆续写了六十多篇BOLO文章,其中绝大部分是有关图像处理的,因此,有人戏称我为图像处理专家(或GDI+专家),此戏称当然是对我的赞扬,但我自己却觉得略含一丝丝贬义,即除了图像处理,别的方面(如网络、数据库等)都不咋的,事实也确实如此。
    我是一名机关工 ......

给Delphi控件设一个图标

方法一:
控件类叫做   TABC,文件名叫 abc.pas 那么新建立一个文件叫
abc.rc
里面内容是
TABC Bitmap icon.bmp
icon.bmp 就是图片文件名,不要超过256色,24x24
然后在命令行下执行 brcc32 abc.rc就会生成 abc.res
改名为 abc.dcr
打开你控件的 dpk文件, 加上 {$R ABC.DCR}
重新编译就可以了。
便捷方 ......

用delphi吧一个word文档追加到另外一个word文档中

uses ComObj;
var WordApp: Variant;
begin
WordApp := CreateOleObject('Word.Application');
WordApp.Documents.open('c:\1.doc');
WordApp.Selection.InsertFile('c:\2.doc','',False,false,false);
WordApp.Selection.InsertFile('c:\3.doc','',False,false,false);
WordApp.ActiveDocument.SaveAs('C:\4.doc' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号