cppwinrt中图像按钮的程序化创建
Programmatic creation of image button in cppwinrt
使用cppwinrt(标准C ,而不是C /CX)如何将按钮的内容设置为图像,以编程方式?必须通过编程方式进行编程,因为CPPWINRT尚未支持XAML,这样做很容易。这是我尝试的,这导致了功能性但空的按钮:
Button button = Button();
BitmapImage bitmapImage = BitmapImage();
Uri imageUri = Uri(L"ms-appx:///Assets/Images/stopbutton.png");
bitmapImage.UriSource(imageUri);
Image buttonImage = Image();
buttonImage.Height(30);
buttonImage.Width(30);
buttonImage.Source(bitmapImage);
button.Content(buttonImage);
然后,我当然会添加按钮,尽管空白,但确实很好地显示了。我尝试了.png的绝对路径,但这也失败了。必须有一种方法在C 中以编程方式进行此操作。
您的原始代码在我这边工作正常。只需确保您的图像真正在资产/图像文件夹中,您将其添加到项目中,并通过检查图像属性中的内容参数是否设置为true,并在构建过程中使用应用程序内容复制。
编辑阅读了您的进一步要求后。只需将按钮填充和边框厚度设置为零,这将删除图像周围的任何空间。
这是一个简单的工作应用程序,其中包含您的按钮创建代码:
#include <winrtWindows.ApplicationModel.Activation.h>
#include <winrtWindows.Devices.Enumeration.h>
#include <winrtWindows.Foundation.h>
#include <winrtWindows.UI.Xaml.h>
#include <winrtWindows.UI.Xaml.Controls.h>
#include <winrtWindows.UI.Xaml.Media.Imaging.h>
using namespace winrt;
using namespace winrt::Windows::ApplicationModel::Activation;
using namespace winrt::Windows::Devices::Enumeration;
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::UI::Xaml;
using namespace winrt::Windows::UI::Xaml::Controls;
using namespace winrt::Windows::UI::Xaml::Media::Imaging;
struct App : ApplicationT<App>
{
void OnLaunched(LaunchActivatedEventArgs const &)
{
Image image;
image.Height(30);
image.Width(30);
image.Source(BitmapImage(Uri(L"ms-appx:///Assets/Images/sample.png")));
Button button;
button.Padding(ThicknessHelper::FromUniformLength(0));
button.BorderThickness(ThicknessHelper::FromUniformLength(0));
button.Content(image);
Window window = Window::Current();
window.Content(button);
window.Activate();
}
static void Initialize(ApplicationInitializationCallbackParams const &)
{
make<App>();
}
static void Start()
{
Application::Start(App::Initialize);
}
};
int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
{
App::Start();
}
好吧,这是使按钮显示填充按钮的图像所需的内容:而不是设置按钮。对图像,请使用图像创建图像刷并设置button.background到该图像刷,例如
Button button = Button();
button.Height(30);
button.Width(30);
BitmapImage bitmapImage = BitmapImage();
Uri imageUri = Uri(L"ms-appx:///Assets/Images/stopbutton.png");
bitmapImage.UriSource(imageUri);
ImageBrush imageBrush = ImageBrush();
imageBrush.ImageSource(bitmapImage);
button.Background(imageBrush);
//The button will now look exactly like the image.
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++类内存结构中创建"spacer"?
- cppwinrt中图像按钮的程序化创建
- 用C++程序化地创建和编译程序