C++ visualc&x2B+;按钮的透明背景色
我知道这个问题已经问过很多次了,但我想具体说明一下。我得到了一个图像,它显示了一个蓝色的X圆圈,我想在Windows应用程序窗体中创建我自己的退出按钮 为此,我在表单中添加了一个按钮,并将图像加载到按钮上。但是,按钮的背景色会破坏图像,因为它是灰色的。所以我试过:C++ visualc&x2B+;按钮的透明背景色,c++,image,button,colors,transparent,C++,Image,Button,Colors,Transparent,我知道这个问题已经问过很多次了,但我想具体说明一下。我得到了一个图像,它显示了一个蓝色的X圆圈,我想在Windows应用程序窗体中创建我自己的退出按钮 为此,我在表单中添加了一个按钮,并将图像加载到按钮上。但是,按钮的背景色会破坏图像,因为它是灰色的。所以我试过: private: System::Void button1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
private: System::Void button1_Paint(System::Object^ sender,
System::Windows::Forms::PaintEventArgs^ e) {
this->TransparencyKey = BackColor;
}
这根本不起作用(背景色仍然是灰色的)。所以我试过这个:
private: System::Void button1_Paint(System::Object^ sender,
System::Windows::Forms::PaintEventArgs^ e) {
this->BackColor = System::Drawing::Color::Transparent;
}
这里我得到一条消息:这个控件不支持透明颜色
好吧,那我该怎么做?
谢谢将
背景
-属性设置为透明:
btn->Background = System::Drawing::Color::Transparent;
顺便说一下,不要在绘制处理程序中执行此操作。相反,在构造函数或任何初始化函数中执行此操作
更新:
好的,明白了-这是一个Windows窗体应用程序。请参阅此链接以获取解决问题的一些方法
另一种可能性(我以前在项目中使用过)是使用
图片盒
,听鼠标点击事件。在WPF和win32中,控件或子窗口通常不能有颜色透明度
但它们可以有一个非矩形区域。任何形状,包括孔
使用控件的区域更改其区域。本链接中有一个关于如何绘制圆形按钮的示例
仅供参考,区域外的像素未接收任何消息/通知
疯狂形状控件的示例:
形状像人头的纽扣
螺旋形
3个彼此不接触的三角形
棋盘-每2个像素是透明的
此外,区域是动态的,可以在对象创建后更改,因此您的按钮可以增长和收缩
它也相当快
限制:
- 无alpha混合-不透明或完全透明
我编写了一个函数(C++/win32),它接受一个控件和一个BMP,两者大小相同,扫描BMP以查找“transparent”颜色(由您决定颜色),并从控件区域中删除该颜色中的所有像素。这是大约一半的代码。你的代码是C++ + CLI而不是C++。请适当地标记你的问题。C++ VisualStudio,Windows应用程序的形式不会使你的代码比几分钟前的C++低,这会引起同样的错误:这个控件不支持透明的颜色,意思是按钮(在公开的Frime1函数中测试),我也可以做一个多边形按钮吗?就像屏幕顶部的按钮一样:任何形状,我指的是任何形状:)。我将在答案中添加一些示例