c++ - 如何在WM6中创建圆角矩形按钮?

标签 c++ user-interface windows-mobile

是的,就像 iPhone 上那些漂亮的按钮。 ;)

我已经搜索和阅读了好几天,每次我发现能让我接近的东西(比如 CreateRoundRectRgn)时,它就会爆炸,因为 Windows Mobile 6 GDI+ 不支持它。

我可以做整个所有者绘制之类的事情。但是我如何弯曲那些硬角并 reshape 按钮呢? :/

注意可用工具:仅限 native Win32(无 MFC)


我有过这种想法,但它留下了两个问题:

1) 带有圆边的位图不会仍然使按钮的角可见。

2) 位图非常适合固定屏幕尺寸。但是由于有多种分辨率,我的目标是在运行时在内存中动态创建按钮位图并以这种方式使用它。

我可以使用方形按钮。然而,我已经看到其他软件使用的圆角按钮。 必须有一种 reshape 按钮的方法。

最佳答案

获得像这样漂亮的按钮通常是通过创建一个完整的所有者绘制的按钮并绘制图形设计师为其创建的图像来完成的,而不是让 GDI 进行任何控件绘制。您只需要一个“向上”图像和一个“按下”图像。您可以手动绘制焦点或使用另一个带有 ROP 蒙版的图像将其绘制在按钮上。要获得漂亮的“圆形”效果,您只需创建具有背景色的图像,然后将其用作透明色。

Tee 缩放问题在某种程度上是 WinMo 独有的,因为 iPhone 实际上只有一种分辨率。如果您需要针对不同分辨率的 WinMo 设备,您可以执行以下两件事之一(您使用的取决于您使用的图像)。 Eitehr 只需绘制缩放后的图像,或包括图像的不同尺寸版本,并在运行时根据屏幕分辨率决定使用哪个。

关于c++ - 如何在WM6中创建圆角矩形按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339200/

相关文章:

android - 使用默认 xml 属性复制 Android 首选项屏幕样式

windows-mobile - WCELOAD 无法安装压缩的 CAB 文件

c++ - 使用选择排序根据玩家点数对列表进行排序?

c++ - 断言 `fp_ != 0' 失败 (RapidJSON)

swift - 使用带有 UI 测试的 Cucumberish 从 Storyboard加载 Controller

php - GUI MySQL 数据库前端

C++:析构函数在超出范围之前被调用?

c++ - 模板化类定义在 VS2017 中无法编译

c++ - 如何在 Windows Mobile 的 MFC 对话框中更改字体/颜色?

c# - Windows Mobile 项目中的 System.Reflection