Foxtable(狐表)用户栏目专家坐堂 → 狐表GDI绘图.DrawString方法是否还有动态获得画刷的颜色的方法,敬请帮助?


  共有13609人关注过本帖树形打印复制链接

主题:狐表GDI绘图.DrawString方法是否还有动态获得画刷的颜色的方法,敬请帮助?

帅哥哟,离线,有人找我吗?
程兴刚
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
狐表GDI绘图.DrawString方法是否还有动态获得画刷的颜色的方法,敬请帮助?  发帖心情 Post By:2010/2/22 15:53:00 [只看该作者]

     春节期间,研究了狐表GDI+绘图功能,其功能强大,很是不错,在使用中遇到了一个困惑,也曾一度发帖请教,出CZY、yangming等总版主给出的判断颜色的方法外,再没有其他良好之对策。
     由于颜色名称众多,在每一个需要指定画刷颜色的地方逐个判断一次颜色,事实上不大可能,尤其是对自定义颜色,更千变万化!
下面是在GDI+中绘制文字的一个语句
g.DrawString(gjdm,fnt,Brushes.Red,45,62)

这里的红色粗体字部分:Brushes.Red直接为一个新的画刷颜色,其本身应该应该属于Brushes类型(非字符型),后面直接跟随颜色名称,暂时没有找到方法动态获得。

希望能够能够支持比如:
      g.DrawString(gjdm,fnt1,Brushes(颜色名称),45,62)

这里的颜色名称允许是一个自由组合的符合颜色名称的字符串,甚至可以支持其他颜色格式(ARGB等等),那将是再漂亮不过

总之,就是希望动态获得画刷颜色,请哪位高手给看看,也烦请贺老师给一个好的方法,谢谢!


画笔属于pen类型,支持多种颜色格式,可以是颜色名称、ARGB格式,我已经通过动态获取和转换获得,这是代码,仅供参考:

Dim pn1 As New Pen(Color.FromARGB(getConfigValue("窗口标注线颜色",e.Form.Controls("ColorLabel2").Value)),1) '指定画笔颜色和画笔宽度
[此贴子已经被作者于2010-2-22 15:58:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/2/22 16:01:00 [只看该作者]

将下面的内容复制到全局代码:

Public Function GetBrushFromColorName(ByVal ColorName As String) As System.Drawing.Brush
    Dim t As Type = GetType(Color)
    Dim p As System.Reflection.PropertyInfo = t.GetProperty(ColorName)
     Dim c As Color = p.GetValue(Nothing, Nothing)
    Return New System.Drawing.SolidBrush(c)
End Function

以后就可以:

g.DrawString(gjdm,fnt1,GetBrushFromColorName(颜色名称),45,62)

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2010/2/22 16:24:00 [只看该作者]

以下是引用狐狸爸爸在2010-2-22 16:01:00的发言:
将下面的内容复制到全局代码:

Public Function GetBrushFromColorName(ByVal ColorName As String) As System.Drawing.Brush
    Dim t As Type = GetType(Color)
    Dim p As System.Reflection.PropertyInfo = t.GetProperty(ColorName)
     Dim c As Color = p.GetValue(Nothing, Nothing)
    Return New System.Drawing.SolidBrush(c)
End Function

以后就可以:

g.DrawString(gjdm,fnt1,GetBrushFromColorName(颜色名称),45,62)

好办法!不知道其它的枚举是否也可以如此?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/2/22 16:26:00 [只看该作者]

以下是引用yangming在2010-2-22 16:24:00的发言:

好办法!不知道其它的枚举是否也可以如此?


其实Color不是枚举,枚举实现这样的功能更简单一点。


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/2/22 16:29:00 [只看该作者]

看不懂图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/2/22 16:30:00 [只看该作者]

贺老师,看来只有您老人家解决得这么干净彻底,我看都看不懂,先当新年第一份大礼收下,谢谢了!


 回到顶部