WEB开发网
开发学院软件开发VC .NET中的自绘机制 阅读

.NET中的自绘机制

 2006-07-18 11:26:21 来源:WEB开发网   
核心提示: DrawBitmap 方法则通过利用 Bitmap 类的 MakeTransparent 将图像以透明方式显示,并会忽略其本来的格式,.NET中的自绘机制(8), bmp.MakeTransparent()MakeTransparent 方法以图像的第一个象素的颜色作为其所属 Bitmap

DrawBitmap 方法则通过利用 Bitmap 类的 MakeTransparent 将图像以透明方式显示,并会忽略其本来的格式。 bmp.MakeTransparent()  MakeTransparent 方法以图像的第一个象素的颜色作为其所属 Bitmap 对象的透明色。通过使用这个方法的重载版本,你也可以自定义透明色。而要显示一个灰化的位图,你有两种选择:第一种方式是使用一套不同的图标,就象工具条的多套图标那样。而我选择第二种方式:使用不同的伽玛值(Gamma)使图像灰化,见 Figure 8。

当你显示一个图像时,你可以利用各类图形对象来控制图像的伽玛校正值,比如画笔Pen或者画刷 Brush。你可以利用Graphics类DrawImage方法传递的ImageAttributes对象来设置或重置伽玛校正值。 通过使用零附近的伽玛值,DrawImage 就可以实现图像的灰化。如 Figure 9 所示(请注意 Print 菜单项),这不失为一个比较好的的自动灰化图像的技巧,更好的方法则是使用一个转换矩阵(参见 GDI+ SDK文档)。

Figure 9 灰化的 Print菜单项

最后一步是利用 DrawText 方法显示菜单的文本。这串要绘制的文本可以选择性地包括其热键的定义串——某个象 Shift+Ctrl+F 这样的 串。如果该菜单项的Shortcut属性已置为真,则被显示的文本将包括菜单文本及其热键两部分。DrawText方法使用了一个内部的GetEffectiveText方法来返回菜单项文本与热键文本。热键不能以显示的格式文本(键1+键2)直接使用将是无意义的。键盘热键全被整理在Shortcut枚举类型中,它的ToString方法将可以返回“CtrlO”这样没有间隔符的热键文本串。这些串中的键名都是除首字母大写,其余字母小写。所以你在任何一个大写字母(除了第一个字母)之前插入一个+分隔符,就能创建Figure 9中所示的热键文本串。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:NET 机制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接