none
如何创建一个异形的tooltip RRS feed

答案

全部回复

  • 0、我也想要这东西,但是网上没有找到类似的样式。

    1、如果只是定义一个简单的异性提示,当然非常简单,我想人家也不会提这样的问题来讨论。

    2、曾有过自定义的想法,但是就是哪个箭头要根据鼠标当前的位置(也就是Tooltip在那个方向,左、上、右、下方向出现,箭头就得变动,不好搞?)来确定,做起来,非常的麻烦。

    3、muczq 用户奖牌用户奖牌用户奖牌用户奖牌用户奖牌你好,能否确定ToolTip会在哪个方向出现?你能否给出一点代码,共享一下?谢谢。

     

    2010年9月6日 23:00
  • 是的。正是和你要求一样:)
    2010年9月8日 2:51
  • 我大概写了下,关键的东西都实现了,根据自己需要修改下就可以了,写得很烂请勿见怪 

    public class CustomTip : ToolTip //这是一个自定义的ToolTip,可以设置任意的style
        {
            public Uri ImageUri;
            public Image myImage;
            public CustomTip()
            {
                this.Style = Application.Current.Resources["LawBotToolTipTemplate"] as Style;//这里我把自定义style放到app.xaml里了

            }
            public override void OnApplyTemplate()
            {
                myImage = (Image)GetTemplateChild("TipImage");//这里可以获得自定义的tooltip中的任意控件,比如背景,以进行动态设置
                myImage.Source = new BitmapImage(ImageUri);
            }
        }
        public partial class MainPage : UserControl
        {
            CustomTip abc = new CustomTip();
            public MainPage()
            {
                InitializeComponent();
                Loaded+=new RoutedEventHandler(MainPage_Loaded);
              
               
            }
            void MainPage_Loaded(object send,EventArgs e)
            {
                this.TestButton.MouseEnter += new MouseEventHandler(TestButton_MouseEnter);                     
                abc.Content = "haha";
                ToolTipService.SetToolTip(TestButton, abc); 
            }
            void TestButton_MouseEnter(object send,MouseEventArgs e)
            {
                abc.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;//这里可以设置tooltip的位置
               
                Point p = e.GetPosition(TestButton);//这个是取得鼠标在控件的相对位置,根据这个比较得出tooltip的位置,然后可以做出相应的设置
                abc.Content= String.Format("鼠标坐标位置:X:{0},Y:{1}", p.X, p.Y);//可以设置tooltip的内容,动态修改 当然你也可以修改背景


            }
        }

    2010年9月8日 3:20
  • 首先感谢,虽然您给出的取鼠标的位置和我的想法不完全符合。

    0)也许我天生愚笨,看不出你实现了关键的东西,我到反而觉得是关键的东西恰恰没有实现。

    1)ToolTip出现的位置不仅和ToolTip相对于使用该ToolTip控件的相对位置有关系,而且和Silverlight容器的边界有关系,还和ToolTip内容本身的大小有关系。比如:控件在Silverlight容器的右边缘,鼠标又在该控件比较偏离右边的位置,ToolTip内容的宽度又比较大, ToolTip就一定会往左边跑。如此,可能是左边,也可能是右边,也可能是上边。。。等情况。还有即便你获得了有关位置,大小信息,要使得他很人性化,也还要下很多功夫。你看哪个word的批注,就非常的聪明,非常的人性化,哪个箭头的方向,哪个箭头的位置是多么的恰当。呵呵,我想还是要下很多功夫的。

    2)我不想附带一个不必要的Mouse_Enter事件出来。因为我们是想封装一个CustToolTip。

    3)我个人认为要封装一个那种箭头CustToolTip,不能继承原ToolTip,必须重写ToolTip类,或者继承Popup之类的类。这个问题我其实思索了1个礼拜。

     4)得声明一下,我研究SL时间较短(不到1年),而且正业、所学专业与计算机毫无关系,因此,想法可能不对,请指正。另外我最近没事,利用业余时间,结合自己的专业做了一个SL的应用系统,请有空看看,帮我提提意见。呵呵还有C#我也不喜欢,觉得还是VB.net功能强大,容易,只是没办法,最近我的这个烂应用才用大家都赶时髦的C#写。如果用vb.net写,会快点,最起码代码符合人类阅读习惯,呵呵。(http://tufei.jxagri.gov.cn/TFZjzx2010/ , 省级管理用户:shtf 密码:123456 )

    我曾经思索过这个问题,觉得比较麻烦。能否好人做到底,给一个较为能说明问题的例子?

    2010年9月8日 12:42
  • 我那些代码是根据你上面的需求实现,可能我理解错了,老实说word批注我没用过。如果要自己实现一个的话,Mouse_Enter之类的事件肯定是要用到的,可以封装到CustToolTip中去。至于具体的例子,抱歉我也没有,只是这两天比较有空来逛下论坛。建议你把想要实现的效果先实现出来,先弄出个雏形来。比如箭头的动态生成,这个我建议用Silverlight的2D绘图类来实现;Silverlight容器的边界检测的实现,这个我也很好奇,微软那个tooltip也实现了。当然tooltip基本的该有的东西应该先弄出来,这只是我的一些想法,谨供参考。

    2010年9月9日 1:56
  • 1)如何创建与Word标注类似的Tooltip,这个问题,一开始,每个人都会觉得很简单。这完全正常。

    2)其实关键的东西不仅是21)确定Tooltip本身呈现需要的高宽,22)取得ToolTip与关联控件的相对位置,23)取得Silverlight容器的大小(这3项应该不会太麻烦)。关键是取得这些参数后要把那个Tooltip呈现的比较人性化,比如批注箭头应该出现在什么位置,箭头的长度,高度,尖锐度,才能与ToolTip呈现后的比例协调,等等关系非常的复杂,不知道要龙一个什么样子的公式或算法才能搞定。

    3)如果今年春节或国庆节没事情干的化,我就来想办法做一个类似word批注一样的ToolTip。

    4)控件的类名就叫,RemarkToolTip 好了,希望好人能先做,最好我坐享其成。

     

     

    2010年9月9日 10:49
  • 我很好奇你主业是做什么的,我虽然是靠编程吃饭的,但是目前还是半吊子程序员,找不到对编程的兴趣,都准备转行了。

    2010年9月10日 2:07
  • 我是在行政事业单位上班,整天没事情。这些单位一般的人都是没事情,有事情的也是搞人际关系,并无实事。而我这人比较苯,所以选择了玩计算机,因为我玩不过人。计算机是机械的东西,人是活的,难处理。从1986开始,估计平均每天4小时以上研究计算机程序。当然对正规软件的使用(如大公司做的一些规范应用软件:Word/Excel/Access/Flash/photoShop/DreamWeaver之类的应用程序),我从不研究,这些东西估计一般搞计算机软件的人,天生拿来就会,好像不需要学习过程。
    2010年9月10日 3:13
  • 果然被我猜中了,事业单位的,1986?我还没出世( ⊙o⊙ )哇,建议你搞个博客,把学习的心得弄出来大家分享一下。

    2010年9月10日 9:14
  • 你要的Word箭头标准,TFSoft已经完成。请到本论坛查找。
    • 已建议为答案 TFSoft 2010年9月23日 16:05
    • 已标记为答案 icuit 2010年9月25日 3:46
    2010年9月23日 16:04
  • 你要的Word箭头标准,TFSoft已经完成。请到本论坛查找。

    非常感谢
    2010年9月25日 3:45