怎么让自行绘制的文本支持屏幕取词?

3tzjq 2009-06-26 10:30:52
此问题困扰我很久了!
我想让Graphics.DrawString()或 ControlPaint.DrawStringDisabled()绘制的文本支持"金山词霸"等软件的屏幕取词功能,但不知如何下手.

比如下面的"已.未审核"和"审核人:..."是自行绘制的,但无法支持屏幕取词:

...全文
87 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyoubaidu 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpio 的回复:]
不知道是不是因为用GDI+绘的,用GDI看看看吧

至少我用GDI在VC里面绘出来的是可以

金山司霸的原理就是截获GDI一些输出函数,比如TextOut,DrawText,把里面的参数取出来

[/Quote]


雅虎乐译 我也来试试
北京的雾霾天 2009-06-26
  • 打赏
  • 举报
回复
我说这因为 ControlPaint.DrawStringDisabled就是使用的Graphics.DrawString来实现的。
北京的雾霾天 2009-06-26
  • 打赏
  • 举报
回复
首先说,这不应该是你的事情,应该是取词软件要实现的。

我使用的“雅虎乐译”就可以取到使用Graphics.DrawString绘制的文字。
3tzjq 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpio 的回复:]

不知道是不是因为用GDI+绘的,用GDI看看看吧

至少我用GDI在VC里面绘出来的是可以

金山司霸的原理就是截获GDI一些输出函数,比如TextOut,DrawText,把里面的参数取出来

[/Quote]

我想也是,它提取的可能只是某控件的一些文本属性(Text,Caption...),是不是该为Text属性加点什么Attribute?
cpio 2009-06-26
  • 打赏
  • 举报
回复

[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的话,可能你处理这些效果会比较麻烦
3tzjq 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Deathsign 的回复:]
哦哦哦
WINFORM啊
你用个LABEL装那几个字,自己写个控件, 控制下LABEL位置嘛  看起一样就行啦

就OK了啊
[/Quote]

我不想继承Label.
目前 AuditStatusButton继承自CrystalButtonBase, CrystalButtonBase继承自Control
Deathsign 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpio 的回复:]

不知道是不是因为用GDI+绘的,用GDI看看看吧

至少我用GDI在VC里面绘出来的是可以

金山司霸的原理就是截获GDI一些输出函数,比如TextOut,DrawText,把里面的参数取出来
[/Quote]

受教!
cpio 2009-06-26
  • 打赏
  • 举报
回复

不知道是不是因为用GDI+绘的,用GDI看看看吧

至少我用GDI在VC里面绘出来的是可以

金山司霸的原理就是截获GDI一些输出函数,比如TextOut,DrawText,把里面的参数取出来
yaazz 2009-06-26
  • 打赏
  • 举报
回复
屏幕取词取的是文本,一般不能分析图像吧
lidss1234 2009-06-26
  • 打赏
  • 举报
回复
用DIV,图做背景图片.然用CSS控制文字.
Deathsign 2009-06-26
  • 打赏
  • 举报
回复
哦哦哦
WINFORM啊
你用个LABEL装那几个字,自己写个控件, 控制下LABEL位置嘛 看起一样就行啦

就OK了啊
满衣兄 2009-06-26
  • 打赏
  • 举报
回复
额,我也想到web了,晕了
满衣兄 2009-06-26
  • 打赏
  • 举报
回复
金山词霸没有分析图片的能力,只能在图片上考虑了.
可以放个div到图片的文字部分.
3tzjq 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Deathsign 的回复:]
你把图片里面挖空··用文本填充 再用CSS控制样式就行了啊
[/Quote]

指WinForm控件,非图片.
Deathsign 2009-06-26
  • 打赏
  • 举报
回复
哦 理解错了。。。

你写个DIV 把DIV 搞透明把字放里面试试????
jieon 2009-06-26
  • 打赏
  • 举报
回复
up...
Deathsign 2009-06-26
  • 打赏
  • 举报
回复
你把图片里面挖空··用文本填充 再用CSS控制样式就行了啊
北京的雾霾天 2009-06-26
  • 打赏
  • 举报
回复
应该不是的,C#里的控件,比如文本框,按钮,他们实际上还是标准Windows控件继承下来的,并没有在C#里全部得到重写,他们的绘制最终应该是通过TextOut来完成的。
3tzjq 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 hbxtlhx 的回复:]
我说这因为 ControlPaint.DrawStringDisabled就是使用的Graphics.DrawString来实现的。
[/Quote]

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

111,112

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧