此问题困扰我很久了! 
我想让Graphics.DrawString()或 ControlPaint.DrawStringDisabled()绘制的文本支持"金山词霸"等软件的屏幕取词功能,但不知如何下手.比如下面的"已.未审核"和"审核人:..."是自行绘制的,但无法支持屏幕取词:

解决方案 »

  1.   

    你把图片里面挖空··用文本填充 再用CSS控制样式就行了啊
      

  2.   

    哦 理解错了你写个DIV 把DIV 搞透明把字放里面试试????
      

  3.   

    金山词霸没有分析图片的能力,只能在图片上考虑了.
    可以放个div到图片的文字部分.
      

  4.   

    哦哦哦
    WINFORM啊
    你用个LABEL装那几个字,自己写个控件, 控制下LABEL位置嘛  看起一样就行啦就OK了啊
      

  5.   

    用DIV,图做背景图片.然用CSS控制文字.
      

  6.   


    不知道是不是因为用GDI+绘的,用GDI看看看吧至少我用GDI在VC里面绘出来的是可以金山司霸的原理就是截获GDI一些输出函数,比如TextOut,DrawText,把里面的参数取出来
      

  7.   


    我不想继承Label.
    目前 AuditStatusButton继承自CrystalButtonBase, CrystalButtonBase继承自Control
      

  8.   


            [DllImport("gdi32.dll", EntryPoint = "TextOut")]
            public static extern int TextOut(
                IntPtr hdc,
                int x,
                int y,
                string lpString,
                int nCount
            );        private void Form1_Paint(object sender, PaintEventArgs e)
            {
                e.Graphics.DrawString("gdi+ test", this.Font, Brushes.White, 100, 100);
                IntPtr hdc = e.Graphics.GetHdc();
                TextOut(hdc, 100, 120, "gdi test", 8);
                e.Graphics.ReleaseHdc(hdc);
            }
    用TextOut输出的是可以的,我试过看来就是GDI+不可以不过,用GDI的话,可能你处理这些效果会比较麻烦
      

  9.   


    我想也是,它提取的可能只是某控件的一些文本属性(Text,Caption...),是不是该为Text属性加点什么Attribute?
      

  10.   

    首先说,这不应该是你的事情,应该是取词软件要实现的。我使用的“雅虎乐译”就可以取到使用Graphics.DrawString绘制的文字。
      

  11.   

    我说这因为 ControlPaint.DrawStringDisabled就是使用的Graphics.DrawString来实现的。
      

  12.   


    这我知道,但为什么像Label,Button...的自带控件就支持取词呢? 难道它们的Text 不由GDI+绘制?
      

  13.   

    应该不是的,C#里的控件,比如文本框,按钮,他们实际上还是标准Windows控件继承下来的,并没有在C#里全部得到重写,他们的绘制最终应该是通过TextOut来完成的。