如何使 MSVS C++ CToolBar 上的按钮连同它们的图像一起变大?

Posted

技术标签:

【中文标题】如何使 MSVS C++ CToolBar 上的按钮连同它们的图像一起变大?【英文标题】:How can you make buttons on a MSVS C++ CToolBar larger along with their images? 【发布时间】:2009-04-07 14:46:52 【问题描述】:

我们有一个触摸屏,但工具栏太小了,我肉肉的手指无法点击。有没有一种简单的方法可以让工具栏按钮变得更大更容易点击?

到目前为止,我已经尝试了一些事情:

m_toolbar.SetSizes( CSize(64,64), CSize(50,50) );
m_toolbar.SetSizes( CSize(64,64), CSize(50,50) );
m_toolbar.GetToolBarCtrl().SetButtonWidth( 64, 64 );
m_toolbar.GetToolBarCtrl().SetButtonSize( CSize(64, 64) );

这些方法都不会拉伸图像。按钮变得更大,并且功能齐全,但图像不会像通常那样与按钮重叠。我希望为图标保留一个图像列表,并拉伸图像以适应。

【问题讨论】:

我决定使用第二个工具栏资源并手动编辑图像。自动缩放它们将是一个更好的解决方案(从大到小缩放),这样您就不必在发生变化时更新两个工具栏。 【参考方案1】:

在创建工具栏时,创建一个大小为 64x64 的空 CImageList(我们称之为 large)。从资源中加载原始图片列表(我们称之为small)。

遍历 small 中的每个图像并将其复制/调整为 large。 然后将 large 分配给您的工具栏。有点麻烦的bui应该可以工作。

HTH,

【讨论】:

【参考方案2】:

据我所知,没有办法根据按钮的大小调整图像的大小。 MFC 应用程序使用 bmp 而不是矢量图像。

因此,您必须提供具有所需尺寸的 bmp 图像。

您可以使用 CImageList 和 SetImageList 来设置图像,但是您必须这样做 在那里用不想要的大小初始化图像。

【讨论】:

以上是关于如何使 MSVS C++ CToolBar 上的按钮连同它们的图像一起变大?的主要内容,如果未能解决你的问题,请参考以下文章

MSVS 12,C++,命令参数不起作用

Windows 10 上的 anaconda cythonize C++

CToolbar 是不是支持带有 32 位图标的按钮?

如何在 Flutter 测试中模拟 TextField 上的按 ENTER

C++ ( MS V S ) 获取OpenFileName

如何使用 TBSTYLE_FLAT 在 MFC CToolBar 上正确显示静态文本?