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
相关文档:
procedure TForm1.Button1Click(Sender: TObject);
Var
Num: Integer;
Begin
Try
Num:=StrToInt(Edit1.Text);
Edit2.Text:=IntToStr(Num*Num);
Except
On EConvertError Do ShowMessage(Edit1.Text+'无法转成整数!');
......
这里先说说两个概念:Theme(主题)和 Visual Style 。Theme 最早出现在 Microsoft Plus! for Windows 95 中,是 Windows 中 Wallpaper、Cursors、Fonts、Sounds 、Icons 等的设置值集合。Visual Style 在 Windows XP 中才被引入,Visual Style 规定了 Contorls 的外观,另外还包括使用这些外观的一套 API ......
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/maozefa/archive/2009/10/28/4737584.aspx
图像缩放是最常用的图像处理,在图像拉伸和取得图像略图中都要用到。图像缩放质量的好坏与图像像素插值方式有关,本文定义了常用的3种插值方式,即临近插值、线性插值和双立方插值方式:
view plaincopy to clipboardpr ......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls,MSHTML;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Edit1: TEdit;
&nb ......
ListView1.Items 为标准 Tlistitems类
ListView1.Items
(1)赋值
with ListView1.Items.Add do
begin
Caption:=caption; //添加第一项
SubItems.add(aaaaa); //添加后面数据
SubItems.add(1234);
SubItems.add(1234);
end; //一定要使用WITH结构.
(2)取值
listview1.Items.Item[i].Caption 取得某条数据标题
l ......