帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Generator  


Sample Image - RGNCreator.gif

<--文章启动 --> !

这里程序的目的是允许你创建非矩形对话框。 程序本身就是一个例子,如果这一点太远的话,会发生什么。

创建透明区域

  • 为对话框创建遮罩图像。 一种颜色将是对话框的透明部分。 透明gif是一种很好的方法,但支持许多图像格式。
  • 运行 RGNerator 。
  • 输入掩码的文件名。 ( 一旦输入了有效的图像文件名,就会自动加载),如果你不能记住它的名字或者位置。
  • 输入表示对话框的透明部分的颜色。 如果你不知道确切的RGB颜色按下拾取按钮。

选取透明颜色

  • 将光标移到透明颜色上方。 右边有两个颜色框。 顶部是当前透明色,底部是光标超过的像素的颜色。 当顶色框包含透明颜色- 右键单击鼠标。
  • 如果很难选择像素,可以缩放图像。
  • 如果图像对于查看区域来说太大,则不能使用滚动条- 或者只需按住鼠标左键并将图像拖动到所需位置即可。
  • 当你选择了颜色 press OK 。
  • 按创建按钮。所需的时间取决于透明区域的复杂性。
  • 完成后,将要求你输入要存储rgn数据的文件的名称。

如何使用透明区域

我已经包含了一个演示项目。 请先看看这个,因为它会告诉你这是多么简单。

在你自己的应用中使用它

  • 将rgn文件作为"rgn"资源插入。
  • 插入要用作背景的位图。
  • 插入对话框
  • 将对话框属性的边框设置为无。
  • 在对话框中插入图片对象
  • 将它的类型设置为bitmap位图""
  • 将背景位图设置为图像。
  • ( 这有点烦人,因为它必须是tab顺序中的第一个。 否则,当对话框显示时,它将覆盖其他对话框控件。 不幸的是,它在编辑对话框时 ! 所以只要你完成了对话框,就将它设置为第一个
  • 从模板创建对话框。
  • 基于CRGNDlg类的对话框。
  • 从演示项目中获取 rgndlg.cpp 和. h 文件。
  • 在对话框源代码中:
    在构造函数中只添加RGN资源 id 。
    我叫 e.g CRGNDlg(CRgnDemoDlg::IDD,pParent,"BACKGROUND")

便笺

  • 在调用基InitDialog函数之前,必须先完成 SetWindowRgn
  • 你不能使用 SetWindowRgn -it中使用的rgn,它属于 Windows - 甚至不删除它。
  • 如果大纲拖动缓慢,则使用完全反转。 它不那么好,但对于复杂区域来说速度更快。 它在 rgndlg.cpp.的Inverttracker函数中
  • 你的图像边缘应该是暗灰色的。 如果背景是反向颜色,而灰色边缘显示为背景色,则非常黑或者非常白色。

"小型字体"还有"大字体"

这个问题:

例如你的桌面显示配置中选择了"小型字体"。 你高兴创建对话框,放入bmp并插入所有必需的控件,以便将它们仔细地与背景bmp对齐。 然后你成功地发送了你的应用程序,然后让人们抱怨事情没有排队。

原因:

这些人选择了'大字体'。 Windows 根据字体缩放对话框及其控件。 字体依赖于'小型/大型'字体设置- 所以is字体 8不是同一个'大小'。 由于图像和rgn是基于像素的,所以存在问题。

解决方案:

有两种可能的解决方案-

1.缩放

这是我在演示应用中实现的。 缩放的缺点是它不精确。 从"小型字体"设计的应用程序中 比如 缩放有点小,如果扩展为"大字体"的话。

( 在演示应用中查看 rgndlg.cppInitDialog 函数) 。

2.有两个独立的图像和两个RGN文件。

设计对话框,然后基于原始的两个对话框,设置一个大图像,一个使用较小的图像。 确定字体模式的"可靠"方式是: if (dc.GetDeviceCaps(LOGPIXELSX) == 120) 然后它的大,或者它的小( dc.GetDeviceCaps(LOGPIXELSX)==96 )

版权

本程序提供了数据动态 。 你可以随意复制并分发给任何人。



文章标签:Generator  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语