关于特殊形状按钮问题! 请教高手如何能做出一个特殊形状的按钮,比如是圆角矩形,椭圆形等.用API函数实现的,不用图片.在线期待~~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通常图形按钮都是从TGraphicControl派生,不用直接调用GDI,利用VCL封装的Canvas绘制图形即可!图形也是用GDI画,好看的按钮还得先做出图像来!Canvas.RoundRect(0,0,Width,Height,5,5);//圆角矩形Canvas.Ellipse(0,0,Width,Height);//椭圆其它就是对消息WM_PAINT处理进行重画,WM_LBUTTONDOWN,WM_LBUTTONUP改变鼠标按下抬起图形的变化,还有CM_MOUSEENTER,CM_MOUSELEAVE等等... TButtonTest = class(TGraphicControl)public constructor Create(aOwner: TComponent); override;protected procedure Paint; override;end;constructor TButtonTest.Create(aOwner: TComponent);begin inherited; Height:=50; Width:=100;end;procedure TButtonTest.Paint;begin inherited; Canvas.Brush.Style:=bsClear; Canvas.Pen.Color:=clBlue; Canvas.Brush.Color:=clGreen; Canvas.RoundRect(0,0,Width,Height,8,8);//圆角矩形 Canvas.Ellipse(0,0,Width,Height);//椭圆end;var Btn:TButtonTest;Btn:=TButtonTest.Create(self);Btn.Parent:=Self; 椭圆形按钮:type TRbutton=class(TButton)private .......protected procedure CreateWnd;override; ........ ........procedure TRbutton.CreateWnd;//在控件一建立就设置var hRgn :THandle;begin inherited CreateWnd; hRgn:=CreateEllipticRgn(0,0,Width,Height);//创建一个椭圆剪裁域; SetWindowRgn(Handle,hRgn,True);end; 把你的button拖过来,再用setwindownrgn搞定, 里面传入的handle参数就是刚才的button1.handle, 具体设置见 cg1120(代码最优化-§新年祝福你,好运伴着你§) ,里面的hrgn就是你要的图形句柄! [分享]用delphi实现的由一颗五角星爆炸成多个五角星的特效,代码仅6行 关于messagebox二次出现的问题解决? 关于随机抽样算法,高手进来直点下 通过adoquery读oracle的blob字段的问题 谁能告诉我为什么会出现这样得错误? Delphi的新主人为什么不为我们开发者开办:Delphi第三方插件商店 MIDAS问题? 关于动态数据交换 这种窗口技术是乍实现的??? 在MEMO控件中如何知道当前光标所在的行数? 你最想听到的李维的讲座内容是什么?2003-03。大家给点建议。200分 ■■■如何查看dll文件中的函数的参数■■■
public
constructor Create(aOwner: TComponent); override;
protected
procedure Paint; override;
end;constructor TButtonTest.Create(aOwner: TComponent);
begin
inherited;
Height:=50;
Width:=100;
end;procedure TButtonTest.Paint;
begin
inherited;
Canvas.Brush.Style:=bsClear;
Canvas.Pen.Color:=clBlue;
Canvas.Brush.Color:=clGreen;
Canvas.RoundRect(0,0,Width,Height,8,8);//圆角矩形
Canvas.Ellipse(0,0,Width,Height);//椭圆
end;var Btn:TButtonTest;Btn:=TButtonTest.Create(self);
Btn.Parent:=Self;
type
TRbutton=class(TButton)
private
.......
protected
procedure CreateWnd;override;
........
........
procedure TRbutton.CreateWnd;//在控件一建立就设置
var
hRgn :THandle;
begin
inherited CreateWnd;
hRgn:=CreateEllipticRgn(0,0,Width,Height);//创建一个椭圆剪裁域;
SetWindowRgn(Handle,hRgn,True);
end;