如何实现这样的效果(100分)

  • 主题发起人 主题发起人 young2002
  • 开始时间 开始时间
Y

young2002

Unregistered / Unconfirmed
GUEST, unregistred user!
设计窗体期间,移动某个组件时,会出现一个虚线框,随着鼠标的移动而移动。当它经过
某个组件时,组件的上面也会被虚线框覆盖。现在想在程序中实现类似的效果:Form上有
多个可视组件,点击某个组件然后移动鼠标会出现表示这个组件的轮廓的虚线框,它随着
鼠标的移动而移动,但是如果利用Form的Canvas属性绘制的话,虚线框只会出现在Form上
当虚线框的边缘位置有组件时,这个组件就会把虚线框覆盖掉
还有工具按钮的悬停提示效果是怎么实现的?(原理)
 
我也想知道,这是游戏的选项里常见的。
 
对没有画布属性的控件的绘制方法
procedure TForm1.Button2Click(Sender: TObject);

var

c:TCanvas;

begin

c:=TControlCanvas.Create;

TControlCanvas(c).Control:=Panel1;

c.Brush.Style:=bsClear;

c.Pen.Color:=clBlue;

c.Rectangle(5,5,15,15);

c.Free;

end;

提示效果为控件的Hint定义内容,ShowHint:=True; 为显示提示信息

 
老兄我不是这个意思
 
这是一个与停靠技术有关的问题,

给你推荐一个人“鲁小班”

一定能帮你解决这个问题
 
在可视控件的OnMouseDown里这样写就可以完成大部分的功能。
begin
ReleaseCapture;
(Sender as TWinControl).Perform(WM_SysCommand,$f012,0);
end;
〉〉还有工具按钮的悬停提示效果是怎么实现的?(原理)
toolbar的showhint设置true,
然后相应的toolbutton的hint写上你的提示。
 
我是说系统实现它的原理,是不是直接在屏幕上绘制提示框
 
绘制提示框?老大你在说什么呀?
showhint怎么是绘制提示框?
至于系统实现它的原理,当然是一个window啦,THintWindow
var
i:integer;
begin
for i:=0 to Application.ComponentCount-1 do
if Application.Components is THintWindow then
(Application.Components as THintWindow).Font
 
多人接受答案了。
 
后退
顶部