设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> Delphi >> 扑克牌组件之二——利用 cards.dll 编写扑克牌组件
精品推荐
Delphi点击TOP10
·Delphi2005可以下载了
·用Delphi实现整个网站图片的极速下载
·制作QQ消息炸弹
·TextFile读写
·用delphi实现冰河的远程屏幕操作功能
·首次发布Delphi7汉化帮助
·Delphi的优点
·systemparametersinfo详细用法
·Delphi 6 IDE的运行时抓图及简介
·delphi实现批量缩略图生成工具开发代码
编程开发点击TOP10
·ASP.NET 程序中常用的三十三种代码
·利用ASP.NET构建网上考试系统
·C#版的网站新闻发布系统
·(转)23种设计模式汇集
·设计ASP.NET新闻管理系统
·深山红叶袖珍PE工具箱V16正式版
·我的.NET书架 (入门篇)
·java笔试题
·.NET:是什么?将走向哪里?
·用ASP.NET和XML做的新闻系统
精选专题

扑克牌组件之二——利用 cards.dll 编写扑克牌组件

作者: 来源:网络文章 时间:2005-12-13 22:37:47

扑克牌组件之二——利用 cards.dll 编写扑克牌组件(1)

扑克组件的编写及使用

上一次写了一个利用位图制作的扑克组件,这次换一下,试着利用cards.dll来做一人组件。这个组件没有大小王,速度也比上一个慢了许多。不过这个组件可以设置很多背景,而且它的宽度和长度都是可以更改的。

cards.dll 功能很全,我们这里只用它来画扑克牌的正面和反面,其他的一律不使用。如果您对这些用法感兴趣,可以到微软的MSDN上去查阅,这里就不再罗嗦了。下面请看:

unit Card;// 项目:扑克牌组件 之二// 作者:黄涛// 邮件: Hunto@163.com// 日期: 2004.12.16// 本组件调用 Windows 的 cards.dll,如果系统不为2000/XP将无法使用。interfaceusesSysUtils, Classes, Controls,windows;typeTCardSuit=(CSClub,CSDiamond,CSHeart,CSSpade); //花色TCard = class(TGraphicControl)private FFaceUp:bool;//是否面朝上 FCardId:Cardinal; //扑克牌的编号 FBackId:Cardinal; //背面图案 procedure SetCardId(Id:Cardinal); //设置扑克牌的编号 procedure SetFaceUp(FaceUp:bool); //设置是否面朝上 procedure SetBackId(const Value: Cardinal); //设置扑克牌的背面图案 function GetSuit: TCardSuit;//得到扑克牌的花色 function GetValue: Cardinal;//得到扑克牌的点数protected procedure Paint;override;//画扑克牌public constrUCtor Create(AOwner:TComponent);override; procedure SetCard(Suit:TCardSuit;Value:Cardinal); //设置扑克牌的编号published property CardId:Cardinal read FCardId write SetCardId;//扑克牌编号 property FaceUp:bool read FFaceUp write SetFaceUp default False;//是否正面朝上 property BackId:Cardinal read FBackId write SetBackId default 0;//背景图案 property Suit:TCardSuit read GetSuit; //花色,只读 property Value:Cardinal read GetValue; //点数,只读 property OnClick; //单击事件 property OnDblClick; //双击事件end;procedure Register;implementation//单元变量,默认的扑克牌宽度和长度var CardWidth,Cardheight:integer;//初如化DLLprocedure cdtInit(var Width,Height:integer);stdcall;external 'cards.dll';//结束DLL调用procedure cdtTerm;stdcall;external 'cards.dll';//画扑克函数procedure cdtDrawExt(ADC:HDC;Left,Top,Width,Height:Cardinal;CardId:Cardinal;mode:integer;Bkgnd:integer);stdcall;external 'cards.dll';procedure Register; //注册组件beginRegisterComponents('Samples', [TCard]);end;{ TCard }constrUCtor TCard.Create(AOwner: TComponent);begininherited;if AOwner is TWinControl then Parent :=TWinControl(AOwner);FaceUp:=False;//设置默认为扑克面朝下Width :=CardWidth;//设置默认的扑克牌宽度,可修改Height:=CardHeight; //设置默认的扑克牌高度,可修改end;function TCard.GetSuit: TCardSuit;beginresult:=TCardSuit(CardId and 3); //得到扑克牌的花色end;function TCard.GetValue: Cardinal;beginresult:=CardId shr 2 +1;//得到扑克牌的值end;procedure TCard.Paint;//画扑克牌var Id,cmd :Cardinal;beginif not assigned(Parent) then exit;//如果父组件没定义,直接退出if FaceUp then //正面朝上begin Id:=CardId; cmd:=0;endelse//背面朝上begin Id:=BackId+54; cmd:=1;end;cdtDrawExt(Canvas.Handle ,0,0,Width,Height,Id,cmd,0);end;procedure TCard.SetBackId(const Value: Cardinal);//设置背景的图案,当时生效beginif (Value <12) and (FBackId <> Value) then FBackId:= Value;if not FaceUp then Paint;end;procedure TCard.SetCard(Suit: TCardSuit; Value: Cardinal);begin//设置扑克牌编号,当时重画dec(Value);CardId:=(Value shl 2 ) or Cardinal(Suit);end;procedure TCard.SetCardId(Id: Cardinal);begin//设置扑克牌编号,当时重画if Id<52 then FCardId:=Id;if FaceUp then Paint; //正面朝上则重画end;procedure TCard.SetFaceUp(FaceUp: bool);begin//设置背面或正面朝上FFaceUp:=FaceUp;paint;end;initializationcdtInit(CardWidth,CardHeight); //初始化DLLfinalizationcdtTerm;//调用结束end.

共2页 9 7 [1] [28 :>

扑克牌组件之二——利用 cards.dll 编写扑克牌组件 相关文章:
扑克牌组件之二——利用 cards.dll 编写扑克牌组件 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com