在ButtionUI的方法public void paint(Graphics g, JComponent c)中调用drawXpButton(),可以设置Button的背景颜色
private void drawXpButton(Graphics g, AbstractButton b, Color c, boolean isRollover) {
if(!b.isContentAreaFilled()) return;
if(!b.isOpaque()) return;//不完成透明
int w = b.getWidth();//Button的宽度
int h = b.getHeight();//Button的高度
// paint border background 绘制边框
Color bg = b.getParent().getBackground();
g.setColor(bg);
//g.drawLine(int x1, int y1, int x2, int y2)
//在此图形上下文的坐标系统中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线。
//g.drawRect(0, 0, w - 1, h - 1) 是在左上对角与右下对角之间画一条连线
g.drawRect(0, 0, w - 1, h - 1);
int spread1 = Theme.buttonSpreadLight[Theme.style];
int spread2 = Theme.buttonSpreadDark[Theme.style];
if(!b.isEnabled()) {//按钮不可用
spread1 = Theme.buttonSpreadLightDisabled[Theme.style];
spread2 = Theme.buttonSpreadDarkDisabled[Theme.style];
}
float spreadStep1 = 10.0f * spread1 / (h - 3);
float spreadStep2 = 10.0f * spread2 / (h - 3);
int halfY = h / 2;
int yd;
for (int y = 1; y < h - 1; y++) {
if(y < halfY) {
yd = halfY - y;
g.setColor(ColorRoutines.lighten(c, (int)(yd * spreadStep1)));
}
else if(y == halfY) {
g.setColor(c);
}
else {
yd = y - halfY;
g.setColor(ColorRoutines.darken(c, (int)(yd * spreadStep2)));
}
g.drawLine(2, y, w - 3, y);
if(y == 1) {
// left vertical line 画左垂直的线
g.drawLine(1, 1, 1, h - 2);
if(isRollover || isDefault) {
// right vertical line 画右垂直的线
g.drawLine(w - 2, 1, w - 2, h - 2);
}
}
else if(y == h - 2 && !isRollover && !isDefault) {
// right vertical line 画右垂直的线
g.drawLine(w - 2, 1, w - 2, h - 2);
}
}
// 1 pixel away from each corner
if(isRollover) {//指示鼠标在按钮上
//获取指示鼠标在按钮上的颜色
g.setColor(Theme.buttonRolloverColor[Theme.style].getColor());
g.drawLine(1, h - 2, 1, h - 2);//绘制左下角点
g.drawLine(w - 2, h - 2, w - 2, h - 2);//绘制右上角点
}
else if(isDefault) {
//获取默认的颜色
g.setColor(Theme.buttonDefaultColor[Theme.style].getColor());
g.drawLine(1, h - 2, 1, h - 2);//绘制左下角点
g.drawLine(w - 2, h - 2, w - 2, h - 2);//绘制右上角点
}
}
public static Color lighten(Color c, int amount) {
if (amount < 0) return c;
if (amount > 100) amount = 100;
int dr = (int)Math.round((255 - c.getRed()) * amount / 100.0);
int dg = (int)Math.round((255 - c.getGreen()) * amount / 100.0);
int db = (int)Math.round((255 - c.getBlue()) * amount / 100.0);
return new Color(c.getRed() + dr, c.getGreen() + dg, c.getBlue() + db, c.getAlpha());
}
public static Color darken(Color c, int amount) {
if (amount < 0 || amount > 100) return c;
int r = (int)Math.round(c.getRed() * (100 - amount) / 100.0);
int g = (int)Math.round(c.getGreen() * (100 - amount) / 100.0);
int b = (int)Math.round(c.getBlue() * (100 - amount) / 100.0);
return new Color(r, g, b, c.getAlpha());
}
分享到:
相关推荐
本主题聚焦于"BUTTON_DRAW.zip_button 背景颜色",这意味着我们将深入探讨如何在程序中动态改变按钮的背景颜色,提升用户体验并实现个性化的界面设计。 首先,我们需要理解的是按钮组件的基础。在大多数编程语言和...
在VC++开发环境中,我们经常会遇到需要自定义控件外观的需求,比如改变CButton控件的文字颜色和背景颜色。CButton是MFC(Microsoft Foundation Classes)库中的一个基础控件,用于创建各种按钮。默认情况下,CButton...
// 设置背景颜色 // 如果需要设置背景图片,可以使用CDC的位图操作 CBitmap* pBitmap = GetBackgroundBitmap(); // 获取背景图片 CDC memDC; memDC.CreateCompatibleDC(pDC); CBitmap* pOldBitmap = memDC....
在本案例中,我们讨论的主题是如何改变按钮控件的背景颜色。 MFC中的CButton类是Windows API中的BUTTON控件的面向对象封装。默认情况下,CButton控件的颜色遵循系统设定,但有时我们可能需要自定义其外观,比如改变...
本知识点主要探讨如何自定义一个“vc button背景颜色类”,以实现按钮背景颜色的动态设置和复用。 首先,我们需要创建一个CColorBtn类,它继承自MFC(Microsoft Foundation Classes)框架中的CButton类。CButton类...
虽然它不能直接设置背景颜色,但可以通过修改按钮的位图或者创建自绘按钮来实现。 5. **使用自绘按钮**: 对于更复杂的定制,你可能需要使用`CButton`的`DrawItem`成员函数来完全自定义按钮的外观,包括背景、边框...
"color_button.rar_button 背景颜色" 提供了一个独特的按钮类,它允许开发者自定义按钮的背景颜色,从而实现更加个性化和美观的用户界面。这个功能在许多应用和网页设计中都极其实用,因为颜色是传达信息、引导用户...
"自绘Button 修改Button背景"这个标题表明我们将探讨如何利用`WM_DRAWITEM`消息来改变Button的默认外观。 `WM_DRAWITEM`是Windows消息系统中的一个关键消息,它在窗口控件(如Button)需要被绘制时发送。当用户界面...
当我们需要在ListView的每一项中包含一个Button,并实现点击Button时改变Button自身的背景,这就涉及到自定义Adapter、事件监听以及对View状态的理解。 首先,我们需要创建一个自定义的Adapter,因为ListView默认的...
在表单的设计器中,从工具箱中选择GradientButton控件,然后在属性窗口中配置文本和颜色,即可在运行时看到一个带有渐变背景的Button。 总结来说,通过重写Button控件并覆盖OnPaint方法,我们可以实现自定义的渐变...
这种方法允许你对按钮的外观进行高度自定义,而不仅仅是修改字体颜色和背景颜色。 总结一下,自定义CButton控件的字体颜色和背景颜色,需要以下步骤: 1. 创建一个继承自CButton的新类,如CTestBtn。 2. 在新类中...
// 更改背景颜色 button->SetWindowTextW(_T("强制更改")); // 更改文字 button->SetTextColor(RGB(255, 255, 255)); // 更改字体颜色 button->SetTextHotColor(RGB(63, 72, 204)); // 更改高亮颜色 button->...
c++ mfc,可以改变button按钮的背景颜色,采用的是重载壹按钮类, button, 方便于美化对话框界面的设计 c++ mfc,可以改变button按钮的背景颜色,采用的是重载壹按钮类, button, 方便于美化对话框界面的设计 c++ ...
// 背景颜色 COLORREF m_FontColor; // 字体颜色 }; ``` 在这个类中,我们定义了颜色Button的背景色和字体色的设置及获取方法,并重写了CButton的`DrawItem`虚函数,该函数在所有者绘制模式下被调用,用于自定义...
本文将详细讲解如何改变Button控件的字体颜色和背景颜色,以及如何实现只对单个控件进行刷新,而无需重新绘制整个页面。 在MFC中,我们通常使用CButton类来操作Button控件。CButton类是MFC提供的一个基类,它继承自...
你可以使用`color`属性改变按钮文本的颜色,使用`background-color`属性改变按钮背景色。例如: ```css button { background-color: #FF0000; /* 红色背景 */ color: #FFFFFF; /* 白色文本 */ } ``` 还可以...
这些脚本不仅能够改变对象的背景颜色,还可以改变文本颜色和边框颜色等其他颜色相关的属性。此外,由于WinCC支持32位颜色,因此开发者可以根据实际需求灵活地调整颜色及其透明度,从而实现更加丰富多样的视觉效果。...
1. **colorbtn.cpp**:这是核心功能的实现文件,包含了自定义Button类的实现,即对标准Button控件进行扩展,添加设置和修改前景和背景颜色的功能。在这个文件中,你可能会看到`OnPaint()`函数的重写,用于绘制自定义...
本文将详细讲解如何在VC中为Button控件添加背景图片,并实现根据按钮状态改变背景图片的效果。 首先,我们需要了解Win32 API中的Button控件。Button控件是窗口小部件,用于响应用户的点击操作。在VC中,我们通常...
在iOS中,可以使用`tintColor`属性改变按钮的文字和图像颜色,或者使用`backgroundColor`属性更改按钮的背景颜色。 2. **滑动按钮(Slide Button)**: 滑动按钮是一种交互性更强的按钮形式,用户需沿着指定方向...