Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
程兴刚 发表于: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楼
狐狸爸爸 发表于: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)
3楼
yangming 发表于: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楼
狐狸爸爸 发表于:2010/2/22 16:26:00
以下是引用yangming在2010-2-22 16:24:00的发言:

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


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

5楼
czy 发表于:2010/2/22 16:29:00
看不懂图片点击可在新窗口打开查看
6楼
程兴刚 发表于:2010/2/22 16:30:00

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

共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.