如何在Groupbox 画线 想在框中画条虚线?哪个属性有啊??请教高手?/ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 虚线是把Canvas.Pen.Style:=psDot;就可以了不过好像Groupbox没有Canvas....你放个image作为Groupbox的背景? 在DELPHI为编程者提供了一个灵活的绘图场所,即本文所述的 CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以 在这些的控件的表面随心所欲的绘图,这对完善用户界面或者制 作一些屏幕特技都有着非凡的作用,下面举例说明几种特殊屏幕 效果的形成过程。 一、CANVAS必备基本知识: 1.具有CANVAS属性的控件: TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirectoryListBox, TDrawGrid,TFileListBox,TForm,THeaderControl,TImage,TListBox,TOutline, TPaintBox,TPrinter,TStatusBar,TStringGrid等, 2.CANVAS属性及命令:篇幅所限,省略参数及格式说明,具体请参考文后程序及DELPHI帮助文件: canvas.rectangle():画矩形pen.color:定义画笔颜色 roundrect():画圆角矩形pen.width:定义画笔宽度 arc():画弧线(不填充) brush.color:定义填充颜色 chord():画弧线(填充) textout():在固定位置输出字符串 pie:画扇形 textwidth:取字符串高度 polygon():画多边形填充textheight:取字符串宽度 polyline():多点连线(不填充)font.color:指定字体颜色 Pixels():指定固定象素点颜色值font.size:指定字体大小 moveto():指明画线起点 Ellipse():画圆或椭圆 lineto():指明画线终点 3.使用CANVAS注意事项:当窗口进行重画时,画布上的图像将消 失,比如当窗口进行最小化又重新恢复时,就会引起画布上图像 的消失,另外当刚刚运行程序时,窗口也是属于重新绘制,所以 如果在绘制窗口之前在画布上绘图,弹出窗口后将不能显示出图 像,比如在TForm1.FormCreate()事件中进行画布绘图操作将是 徒劳的,但可以在此事件中进行画布操作的准备工作,比如设置 画笔的颜色和宽度等。 二、CANCAS应用举例: 1.为控件增加阴影或投影效果:基本原理就是在利用该控件的父 控件比如FORM或者其它容器控件的CANVAS,在需要修饰的控件周 围适当处填加图像,通过线条及颜色的合理达配,使控件与周围的 图像融为一体,形成特殊的视觉效果,具体操作时需要根据被修饰 控件的TOP、LEFT、WIDTH、HEIGHT等属性,确定需要画线的起 点和终点坐标,这样操作无论被修饰控件位置及尺寸如何变化, 都可以保证投影及阴影效果完美的实现;比如可在窗口中建立三 个按钮,然后在按钮2和按钮3的CLICK事件中填加如下代码,之 后按下按钮2或按钮3即使按钮1形成投影和阴影效果: procedure TForm1.Button2Click(Sender:TObject); var x,y,i:integer; begin x:=0;y:=0; form1.canvas.pen.width:=1; fori:=0to8do begin form1.canvas.pen.color:=$00a0a0a0; form1.canvas.moveto(Button1.left+Button1.width+x, Button1.top+y); form1.canvas.lineto(Button1.left+Button1.width+x, Button1.top+button1.height+y); form1.canvas.pen.color:=$00606060; form1.canvas.moveto(Button1.left+x, Button1.top+Button1.height+y); form1.canvas.lineto(Button1.left+Button1.width+x, Button1.top+button1.height+y); x:=x+1; y:=y+1; end; end; procedure TForm1.Button3Click(Sender:TObject); var x,y,i:integer; begin x:=0;y:=0; form1.canvas.pen.width:=1; fori:=0to8do begin form1.canvas.pen.color:=$00404040; form1.canvas.moveto(Button1.left+Button1.width+x, Button1.top+8); form1.canvas.lineto(Button1.left+Button1.width+x, Button1.top+button1.height+8); form1.canvas.moveto(Button1.left+8, Button1.top+Button1.height+y); form1.canvas.lineto(Button1.left+Button1.width+8, Button1.top+button1.height+y); x:=x+1; y:=y+1; end; end; 2.为控件加上边框:DELPHI中有很多控件无边框属性,利用CANVAS 可以为任意的控件填加边框,使其轮廓清楚;具体操作时,可先定 义出画笔的颜色、画笔的宽度(边框宽度),之后用polyline()命 令根据相应控件的位置、尺寸自动定位四角坐标,一次可完成一 个固定宽度矩形的绘制工作,如果需要多种颜色或者具有立体效 果的边框,可多次定义画笔颜色,画出连续的多个矩形,通过调 整相邻矩形的颜色来实现特殊效果的边框绘制工作;比如在窗体 中安放两个按钮,分别在MOUSEMOVE事件中填加如下代码,之后每 当鼠标移到相应的按钮上时,相应的按钮就会出现特殊颜色的边 框,当鼠标移到窗口空白处时,则窗口会出现明显的边线,起到特 殊的提示效果; procedure TForm1.Button1MouseMove (Sender:TObject;Shift:TShiftState;X,Y:Integer); begin form1.repaint; form1.Canvas.pen.color:=clGreen; form1.Canvas.pen.width:=5; form1.Canvas.polyline([point(Button1.left,Button1.top), 楼主 拖个image上去 做个假的吧 先做个bmp图片 里面就一天虚线 然后用image调用 把transparent属性改为true就可以了 放过PaintBox,再这个PaintBox上画,简单处理一下。 没有Canvas照样可以画的,只要有handle就可以。否则皮肤如何美化?方法是获得控件的dc,然后通过gdi直接画。比如:procedure TForm1.Button1Click(Sender: TObject);var dc: HDC;begin dc := GetDC(GroupBox1.Handle); LineTo(dc,GroupBox1.Top,GroupBox1.Width); ReleaseDC(GroupBox1.Handle,dc);end; 关注:如何在GroupBox中实现不同控件之间的连线?运行时画的线能随控件的移动而移动,并且线还能被删除! ???如何截取这样的串??? 谁告诉我如何快速入门delphi? 无聊,烦躁,找人一起吐口水,反正分都是系统给的。。 在数据库中存取图片。 不知行不行!! 客户端用浏览器,服务端用delphi开发语言,怎么实现?? 各位都进来看看。 在delphi中如何获得摄像头捕捉的图象 对于Capability not supported这问题如何解决? 急!!!! 北信得到这儿来 签个到 两类报表比较 用ADOQuery排序后,怎么显示“名次”?谢谢!
把transparent属性改为true就可以了
方法是获得控件的dc,然后通过gdi直接画。
比如:procedure TForm1.Button1Click(Sender: TObject);
var
dc: HDC;
begin
dc := GetDC(GroupBox1.Handle);
LineTo(dc,GroupBox1.Top,GroupBox1.Width);
ReleaseDC(GroupBox1.Handle,dc);
end;
如何在GroupBox中实现不同控件之间的连线?
运行时画的线能随控件的移动而移动,并且线还能被删除!