仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 836|回复: 8
打印 上一主题 下一主题

[学习教程] ASP编程:第五章 Delphi图形图象编程(二)

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。

画直线时,用户只要在松开鼠标才干瞥见直线,对直线的变更不克不及举行及时观察。这是由于鼠标挪动时程序没有举行某种应。Delphi界说了OnMouseMove事务来呼应鼠标挪动。以下代码可以使用户随时观察直线的变更: 
 procedureTForm1.FormMouseMove(Sender:Tobject)
begin
Drowto(X,Y);
Moveto(origin);
end. 
origin是肇端点。
5.2.3画图功效的完成
  画图软件常依据用户的请求改动画图工具。Graphex.dpr例程中,当用户按下某个按钮时,可选择画图工具中的画笔或画刷,在程序范例申明部分界说了五种画图工具。
   type
TDrawingTool=(dtLine,dtRectangle,dtEllips,dtRoundRect,dtPolygon); 
中选中某种按钮,则选中了响应的画图工具,如: 
procedureTForm1.LineButtonClick(Sender:TObject);
begin
DrawingTool:=dtLine;
end; 
procedureTForm1.RectangleButtonClick(Sender:TObject);
begin
DrawingTool:=dtRectangle;
end; 
procedureTForm1.EllipseButtonClick(Sender:TObject);
begin
DrawingTool:=dtEllipse;
end; 
procedureTForm1.RoundRectButtonClick(Sender:TObject);
begin
DrawingTool:=dtRoundRect;
end; 
procedureTForm1.PolygonButtonClick(Sender:TObject);
begin
DrawingTool:=dtPolygon;
end;  
DrawShape历程界说了每种画图工具的举措: 
procedureTForm1.DrawShape(TopLeft,BottomRight:TPoint;AMode:TPenMode);
begin
withImage.Canvasdo
begin
Pen.Mode:=AMode;
caseDrawingToolof
dtLine:begin
MoveTo(TopLeft.X,TopLeft.Y);
LineTo(BottomRight.X,BottomRight.Y);
end;
dtRectangle:Rectangle(TopLeft.X,TopLeft.Y,BottomRight.X,BottomRight.Y);
dtEllipse:Ellipse(TopLeft.X,TopLeft.Y,BottomRight.X,BottomRight.Y);
dtRoundRect:RoundRect(TopLeft.X,TopLeft.Y,BottomRight.X,BottomRight.Y,
(TopLeft.X-BottomRight.X)div2,(TopLeft.Y-BottomRight.Y)div2);
dtPolygon:Polygon([Point(0,0),TopLeft,BottomRight]);end;
end;
end; 
 程序刚运转时,只要一个工具栏。当用户单击画笔和画刷时,则呈现响应的工具栏。其代码以下: 
procedureTForm1.PenButtonClick(Sender:TObject);
begin
PenBar.Visible:=PenButton.Down;
end; 
procedureTForm1.BrushButtonClick(Sender:TObject);
begin
BrushBar.Visible:=BrushButton.Down;
end;
在计划画图程序时,还要办理一些成绩。如为了在鼠标挪动时能观察图形的变更,我们界说了OnMouseMove事务。但会呈现如许的征象,当鼠标进进画图区时,用户未按下鼠标键,画布上却呈现绘制的图形,这是我们不但愿看到的。其缘故原由是没有对鼠标按钮是不是按下举行判别。因而在窗体工具中界说了drawing的域,当鼠标按钮按下时,drawing设置成真值。只要drawing为真,鼠标挪动才实行画图功效;当鼠标键松开时,drawing设置成假,鼠标挪动将不实行画图举措。
别的一个成绩是,我们但愿失掉的是鼠标按钮按下和松开这两点所构成的图形,但OnMouseMove却把鼠标轨迹上各点与肇端点所构成的一切图形画在屏幕上,这一样是我们不但愿看到的,为懂得决这些成绩,程序界说了鼠标的三个事务: 
procedureTForm1.FormMouseDown(Sender:TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:Integer);
begin
Drawing:=True;
Image.Canvas.MoveTo(X,Y);
Origin:=Point(X,Y);
MovePt:=Origin;
OriginPanel.Caption:=Format(Origin:(%d,%d),[X,Y]);
end; 
procedureTForm1.FormMouseUp(Sender:TObject;Button:TMouseButton;
Shift:TShiftState;X,Y:Integer);
begin
ifDrawingthen
DrawShape(Origin,Point(X,Y),pmCopy);
Drawing:=False;
end; 
procedureTForm1.FormMouseMove(Sender:TObject;Shift:TShiftState;X,
Y:Integer);
begin
ifDrawingthen
begin
DrawShape(Origin,MovePt,pmNotXor);
MovePt:=Point(X,Y);
DrawShape(Origin,MovePt,pmNotXor);
end;  
MovePt用来纪录鼠标以后地位。当下次鼠标挪动时,就可以在前次鼠标绘制的图形上画一个外形、巨细一样的图形,并把画笔色彩设置成PmNotXor,使前次绘制的图形色彩酿成了屏幕色彩,从而到达“橡皮擦”的效果。
  将画笔、画刷的Style属性设置成用户但愿的值,可完成对画笔和画刷作风的选择。 
procedureTForm1.SetBrushStyle(Sender:TObject);
begin
withImage.Canvas.Brushdo
begin
ifSender=SolidBrushthenStyle:=bsSolid
elseifSender=ClearBrushthenStyle:=bsClear
elseifSender=HorizontalBrushthenStyle:=bsHorizontal
elseifSender=VerticalBrushthenStyle:=bsVertical
elseifSender=FDiagonalBrushthenStyle:=bsFDiagonal
elseifSender=BDiagonalBrushthenStyle:=bsBDiagonal
elseifSender=CrossBrushthenStyle:=bsCross
elseifSender=DiagCrossBrushthenStyle:=bsDiagCross;
end; 
procedureTForm1.SetPenStyle(Sender:TObject);
begin
withImage.Canvas.Pendo
begin
ifSender=SolidPenthenStyle:=psSolid
elseifSender=DashPenthenStyle:=psDash
elseifSender=DotPenthenStyle:=psDot
elseifSender=DashDotPenthenStyle:=psDashDot
elseifSender=DashDotDotPenthenStyle:=psDashDotDot
elseifSender=ClearPenthenStyle:=psClear;
end;
end; 
5.3图象工具概述 
5.3.1TGraphic工具
  TGraphic工具是TBitmap,TIcon,Tmetafile工具的基类。假如晓得图象的详细范例(如位图,图标元文件),则应将图象储存在响应范例的工具中(如TBitmap,TIcon,Tmetafile),不然应当利用可储存任何图象范例的TPicture工具。 
5.3.2TPicture工具 
  TPicture工具能够保留位图、图标或元文件。Graphic属性中包含图象的范例;图象的高度和宽度分离界说在Height,Width属性中;挪用LoadFromFile办法,能够从文件中装载一幅图象:
procedureTForm1.FormCreate(Sender:TObject);
begin
BitBtn1.Glyph.LoadFromFile(TARTAN.BMP);
end; 
要保留一个位图,则要用SaveToFile办法;要把图象复制到剪切板,能够挪用TClipboard工具的Assign办法。 
5.3.3TImage部件 
  TImage部件用以在窗体中显现图象,它的Picture属性保留着要显现的图象,这是一个TPicture工具。AutoSize,Stretch属性是用来调治部件与图象的巨细的。当AutoSize为真值时,TImage部件将依据它所包括的图象的巨细来调剂本身的巨细;当AutoSize为假值时,不管图象有多年夜,部件将坚持计划时的巨细。假如部件比图象小,那末只要一部分图象是可见的。当Stretch为真值时,位图象将依据部件的巨细调剂本身的巨细,当部件巨细改动时,元文件也做响应变更。Stretch属性对图标没有感化。 
5.3.4TBitmapObject(位图工具)
  位图工具包括一个位图图象,有HBITMAP,HPALETE句柄,可主动办理调色板。位图工具也有画布属性。位图的Palette属性用来把持位图的色彩映照,它包含256种可显现的色彩。假如使用程序用远景色绘制位图,Palette属性的色彩将被到场Windows体系调色板,别的色彩被映照到体系调色板已存在的色彩。假如使用程序用本人的色彩绘制位图,而别的程序已占据体系调色板,位图的色彩将被映照到体系调色板中。
  假如Monochrome属性设置成假,位图将显现成黑色,反之显现成口角色。
  挪用Draw和StretchDraw办法可在画布上绘制位图。 
5.4图象工具的使用 
  本章例程中,单击(文件|扫瞄)菜单项,将弹出一个图象扫瞄窗体。假如用户在窗体当选择文件列表框的图形文件,窗体右上角的图象部件大将呈现此文件所代表的图象;若选择“镌刻效果”按钮中反省框,窗体中的减速按钮和位图按钮大将呈现位图。
  以下代码是将图象文件装载至图象部件上: 
procedureTImageForm.FileListBox1Click(Sender:TObject);
var
FileExt:string[4];
begin
FileExt:=UpperCase(ExtractFileExt(FileListBox1.Filename));
if(FileExt=.BMP)or(FileExt=.ICO)or(FileExt=.WMF)then
begin
Image1.Picture.LoadFromFile(FileListBox1.Filename);
Label1.Caption:=ExtractFilename(FileListBox1.Filename);
if(FileExt=.BMP)then
begin
Label1.Caption:=Label1.Caption+
Format((%dx%d),[Image1.Picture.Height,Image1.Picture.Width]);
ViewForm.Image1.Picture.Bitmap:=Image1.Picture.Bitmap;
ViewAsGlyph(FileExt);
end;
ifFileExt=.ICOthenIcon:=Image1.Picture.Icon;
ifFileExt=.WMFthen
ViewForm.Image1.Picture.Metafile:=Image1.Picture.Metafile;
end;
end;   
这个历程起首判别文件范例,假如是图象文件,则将图象装载至图象部件上,并在标签上列出文件称号。假如是位图文件,还将显现其巨细。
  在减速按钮和位图按钮中显现位图的代码以下: 
 procedureTImageForm.CheckBox1Click(Sender:TObject);
begin
ViewAsGlyph(UpperCase(ExtractFileExt(FileListBox1.Filename)));
end; 
procedureTImageForm.ViewAsGlyph(constFileExt:string);
begin
ifCheckBox1.Checkedand(FileExt=.BMP)then
begin
SpeedButton1.Glyph:=Image1.Picture.Bitmap;
SpeedButton2.Glyph:=Image1.Picture.Bitmap;
SpinEdit1.Value:=SpeedButton1.NumGlyphs;
BitBtn1.Glyph:=Image1.Picture.Bitmap;
BitBtn2.Glyph:=Image1.Picture.Bitmap;
end;
end; 
窗体中有一个反省框用来查验图象部件的Strecth属性的效果。当此反省框被选中时,Stretch设成真值,图象将依据部件巨细调剂本身巨细。代码以下: 
procedureTImageForm.StretchCheckClick(Sender:TObject);
begin
Image1.Stretch:=StretchCheck.Checked;
end;  
在这个窗体中,用户能够在屏幕和打印纸上调剂图象部件的巨细、地位。调剂图象的代码以下:  
procedureTViewForm.SpinEdit1Change(Sender:TObject);
begin
IMage1.Height:=105+SpinEdit1.Value*5;
IMage1.Width:=105+SpinEdit1.Value*5;
end; 
procedureTViewForm.SpinEdit2Change(Sender:TObject);
begin
Image1.Left:=40+SpinEdit2.Value*20;
end; 
procedureTViewForm.SpinEdit3Change(Sender:TObject);
begin
Image1.Top:=96+SpinEdit3.Value*10;
当用户按下标有“全尺寸”字样的按钮时,另外一个窗体将显现。
图象打印代码以下:
procedureTViewForm.Button1Click(Sender:TObject);
begin
Printer.BeginDoc;
Printer.Canvas.Draw(Trunc(1.5*Image1.Left),Trunc(1.5*Image1.Top),Image1.Picture.Graphic);
Printer.EndDoc;
end;

Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
乐观 该用户已被删除
沙发
发表于 2015-1-19 12:02:56 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
若天明 该用户已被删除
板凳
发表于 2015-1-24 16:28:49 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-2 10:49:07 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
兰色精灵 该用户已被删除
5#
发表于 2015-2-7 18:24:12 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
再现理想 该用户已被删除
6#
发表于 2015-2-22 22:42:31 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
山那边是海 该用户已被删除
7#
发表于 2015-3-7 04:11:18 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
莫相离 该用户已被删除
8#
发表于 2015-3-14 11:46:25 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
分手快乐 该用户已被删除
9#
发表于 2015-3-21 05:29:09 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 23:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表