Delphi图像处理
《Delphi图像处理 -- 数据类型及内部过程》一文中定义了基本的图像数据类型及一些内部过程,本文进一步将Delphi常用的图像类型转换为图像处理所需的数据结构,为具体的Delphi图像处理过程作准备,同时也要将处理好的图像数据转换为Delphi的常用图像类型。《Delphi图像处理》系列除图像数据转换过程外,其它图像处理过程都统一使用32位ARGB像素格式。
一、获取TGraphic的图像数据。
TGraphic是Delphi的图像类基类,特别是其派生类TBitmap,更是Delphi最重要,也是最基础的图像类,它封装了Windows位图的常用操作,其它TGraphic派生类(包括一些第三方派生类)都可以转换为TBitmap,因此,获取了TBitmap的图像数据,也就获取了TGraphic派生类的图像数据。
有多个方法获取TBitmap的图像数据,一是直接在TBitmap的扫描线上操作,其好处是图像处理后直接反映在TBitmap中,不必再进行转换,缺点是由于本图像处理系列采用了统一的32位ARGB像素格式,所以必须设置TBitmap.PixelFormat属性,如此一来,势必破坏了原图像像素格式,而且除原32位图像外,实际上也进行了一次图像数据拷贝;二是不破坏TBitmap的像素格式,直接在TBitmap.ScanLine中解析拷贝图像数据,这是间接的TBitmap图像数据处理,处理完毕,有可能要转换为新的TBitmap;三是,用TBitmap.Handle属性借助Windows API进行数据转换,这种方式与第二种方式差不多,《Delphi图像处理 -- 真彩色图像转换为低色彩图像》一文中就是采用的这种方式。本文采用前2种方式获取TBitmap图像数据,具体采用何种方式由具体情况而定。下面是实现代码:
过程定义:
// 获取Graphic的图像数据。必须用FreeImageData释放数据结构
function GetImageData(Graphic: TGraphic): TImageData; overload;
// 获取Bitmap的图像数据。如果IsCopyData=True,复制Bitmap数据,
// 用FreeImageData释放数据结构,否则,Bitmap转换为32位后直接操作扫描线
function GetImageData(Bitmap: TBitmap; IsCopyData: Boolean): TImageData; overload;
// 拷贝Source到32位Dest。如果是8位或者4位Source,必须要有相应的颜色表Colors
procedure CopyImageDatafrom(var Dest: TImageData;
const Source: TImageData; Colors: PRGBQuad = nil);
// 拷贝32位Source到32 or 24位Dest。
实现代码:
// 填充Alpha通道
procedu
相关文档:
服务端:添加ADOConnection,ADOQuery1,ADOQuery2。设置ADOQuery1为主表,ADOQuery2为从表。(通过 ADOQuery2.SQL.Text:= 'select * from 从表 where FKID=:主表PKID'设置)。添加DataSetProvider1和DataSetProvider2分别连接到ADOQuery1和ADOQuery2。
客户端:添加ClientDataSet1,ClientDataSet2。ClientDataS ......
Unt_Machine_WebDll.pas
BODY {background: #FFFFFF}
A:link { color: #0000FF}
A:visited { color: #0000FF}
A:Active { color: #0000FF}
.bold {font-weight: bold}
.italic {font-style: italic}
.underline {text-decoration: underline}
unit Unt_Machine_WebDll;
{$WARN SYMBOL_PLATFORM OF ......
常用控件命名前缀
控件类名
前缀
TForm等窗体类
frm
TButton, TSpeedButton等所有的按钮类
btn
TCheckBox等所有的检查框
chk
TRadioButton单选按钮类
rdo
TListBox等所有的列表框类
lst
TPanel等所有的面板类
pnl
TLabel, TStaticText等所有用来显示的标签类
lbl
TE ......
在DELPHI为编程者提供了一个灵活的绘图场所,即本文所述的
CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以
在这些的控件的表面随心所欲的绘图,这对完善用户界面或者制
作一些屏幕特技都有着非凡的作用,下面举例说明几种特殊屏幕
......
......