如何从一张图片中裁剪一部分距形图片另存为文件?
需要一段实现的功能的代码
procedure TForm1.Button1Click(Sender: TObject);
var
SrcBmp, DestBmp: TBitmap;
begin
SrcBmp := TBitmap.Create;
SrcBmp.LoadfromFile('C:\Source.bmp');
DestBmp := TBitmap.Create;
DestBmp.Width := 100;
DestBmp.Height := 100;
DestBmp.Canvas.CopyRect(Rect(0, 0, 100, 100), SrcBmp.Canvas, Rect(50, 50, 150, 150)); {要与给出的位图大小保持一直避免压缩}
DestBmp.SaveToFile('C:\Dest.bmp');
&nb ......
absolute
//它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同.
var
Str: string[32];
StrLen: Byte absolute Str;
//这个声明指定了变量StrLen起始地址与Str相同.
//由于字符串的第0个位置保存了字符串的长度, 所以StrLen的值即字符串长度.
begin
Str := 'abc';
Edit1.Text := IntToStr(StrLen);
end;
abstract
//它允许你创建抽象的方法, 包括有抽象方法的类称为抽象类.
//Abstract关键字必须与Virtual或Dynamic关键字同时使用, 因为抽象方法必须被覆盖式实现.
//抽象类不能实例化, 抽象方法不能包含方法体.
type
TDemo = class
private
protected
procedure X; virtual; abstract;
public
constructor Create;
destructor Destroy; override;
published
end;
and
//一、表示逻辑与
if (a>0) and (b>0) then
//二、表示位运算
var
a,b,c: Integer;
begin
c := (a and b);
end;
//使用And表示逻辑时, And左右的表达式必须用小括号括起, 以避免以生条件的冲突.
//例如:
if a>0 and b>0 then
//编译器可能会理解为:
if a>(0 and b)>0 then ......
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,MSHTML, SHDOCVW,IdGlobal;
type
TMainFrm = class(TForm)
btnTest: TButton;
edURL: TEdit;
Label1: TLabel;
procedure btnTestClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainFrm: TMainFrm;
implementation
{$R *.dfm}
procedure FillIEForm(aURL:string);
procedure DoWithHtmlElement(aElementCollection:IHTMLElementCollection);
var
k:integer;
vk:oleVariant;
Dispatch: IDispatch;
HTMLInputElement:IHTMLInputElement;
HTMLSelectElement:IHTMLSelectElement;
HTMLOptionElement: IHTMLOptionElement;
HTMLText ......
ControlState 属性
对应对象:TControl
声明:TControlState = set of (csLButtonDown, csClicked, csPalette, csReadingState, csAlignmentNeeded, csFocusing, csCreating);
property ControlState: TControlState;
功能:ControlState属性用来查询控件运行时的状态。
ControlState属性用来指明运行的每一个时刻控件的状态。属性属于TControlState类型,这个类型是一个标志集,它可以被设置成为以下值的组合形式。
值 / 意 义
csLButtonDown / 点击鼠标的左按钮不放,这个是为所有的鼠标按下事件设置的。
csClicked / 和csLButtonDown一样,只是在ControlStyle属性包含csClickEvents标志时它才被设置,以说明鼠标按下时的事件。
csPalette / 说明一个WM_PALETTCHANGED信息被控件接受或者被控件的父类接受。
csReadingState / 控件正在从一个流中读取它的状态。
csAlignmentNeeded / 当队列再次被允许时控件需要重新排列它自己。
csFocusing / 应用程序过程焦点送给控件。这不能保证控件就将收到焦点,但是防止了递归的调用。
csPaintCopy / 控件被复制,意味着控件的拷贝被打印,控制风格标记csReplicatable必须被设置为该状态的发生。
csCreati ......
很古老话题了,不过今天碰到了,就捡起来研究和总结一下。
delphi可以把各种资源文件整合到exe文件中,这样调入速度快。
一 bmp图像,有两种方法
procedure TfrMain.btnCanvasPic(Sender: TObject);
var bBitmap : TBitmap;
begin
bBitmap := TBitmap.Create;
try
bBitmap.Handle := LoadBitmap(hInstance, 'ATHENA');
Image1.Width := bBitmap.Width;
Image1.Height := bBitmap.Height;
Image1.Canvas.Draw(0,0,bBitmap);
finally
bBitmap.Free;
end;
end;
另一种办法:
procedure TfrMain.btnLoadPicClick(Sender: TObject);
begin
Image1.Picture.Bitmap.
LoadfromResourceName(hInstance,'EARTH');
end;
二 光标文件
procedure TfrMain.btnUseCursorClick(Sender: TObject);
const NewCursor = 1;
begin
Screen.Cursors[NewCursor] :=
LoadCursor(hInstance,'CURHAND');
Image1.Cursor := NewCursor;
end;
三 icon文件
public
nrIco : Integer;
MinIcon : array[0..1] of TIcon;
...
......
(转)说到网页采集,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去。其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等。
目前网页采集多为3P代码为多(3P即ASP、PHP 、JSP)。用得最有代表的就动易科技公司BBS中新闻采集系统,和网上流传的新浪新闻采集系统等都是用ASP程序来使用,但速度从理论上来说不是很好。如果尝试用其它软件的多线程采集是不是更快?答案是肯定的。用DELPHI、VC、VB、JB都可以,PB似乎比较不好做。以下用DELPHI来解释采集网页数据。
一、 简单的新闻采集
新闻采集是最简单的,只要识别标题、副题、作者、出处、日期、新闻主体、分页就可以了。在采集之前肯定要取得网页的内容,所以在DELPHI里加入idHTTP控件(在indy Clients面板),然后用idHTTP1.GET 方法取得网页的内容,声明如下:
function Get(AURL: string): string; overload;
AURL参数,是string类型,指定一个URL地址字符串。函数返回也是string类型,返回网页的HTML源文件。比如我们可以这样调用:
tmpStr:= idHTTP1.Get(‘http://www.163.com’);
调用成功后,tmpstr变量里存储的就是网易主页的代码了。
接下来 ......