`

修改Button的背景颜色

阅读更多

在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 背景颜色

    本主题聚焦于"BUTTON_DRAW.zip_button 背景颜色",这意味着我们将深入探讨如何在程序中动态改变按钮的背景颜色,提升用户体验并实现个性化的界面设计。 首先,我们需要理解的是按钮组件的基础。在大多数编程语言和...

    VC-button.zip_CButton文字颜色_button 背景颜色_vc++button颜色_颜色按钮

    在VC++开发环境中,我们经常会遇到需要自定义控件外观的需求,比如改变CButton控件的文字颜色和背景颜色。CButton是MFC(Microsoft Foundation Classes)库中的一个基础控件,用于创建各种按钮。默认情况下,CButton...

    MFC中修改Button控件字体、字体大小、背景色、背景图片

    // 设置背景颜色 // 如果需要设置背景图片,可以使用CDC的位图操作 CBitmap* pBitmap = GetBackgroundBitmap(); // 获取背景图片 CDC memDC; memDC.CreateCompatibleDC(pDC); CBitmap* pOldBitmap = memDC....

    VC6.0改变按钮的背景颜色

    在本案例中,我们讨论的主题是如何改变按钮控件的背景颜色。 MFC中的CButton类是Windows API中的BUTTON控件的面向对象封装。默认情况下,CButton控件的颜色遵循系统设定,但有时我们可能需要自定义其外观,比如改变...

    vc button背景颜色类

    本知识点主要探讨如何自定义一个“vc button背景颜色类”,以实现按钮背景颜色的动态设置和复用。 首先,我们需要创建一个CColorBtn类,它继承自MFC(Microsoft Foundation Classes)框架中的CButton类。CButton类...

    MFC_Button控件的背景颜色控制

    虽然它不能直接设置背景颜色,但可以通过修改按钮的位图或者创建自绘按钮来实现。 5. **使用自绘按钮**: 对于更复杂的定制,你可能需要使用`CButton`的`DrawItem`成员函数来完全自定义按钮的外观,包括背景、边框...

    color_button.rar_button 背景颜色

    "color_button.rar_button 背景颜色" 提供了一个独特的按钮类,它允许开发者自定义按钮的背景颜色,从而实现更加个性化和美观的用户界面。这个功能在许多应用和网页设计中都极其实用,因为颜色是传达信息、引导用户...

    自绘Button 修改Button背景

    "自绘Button 修改Button背景"这个标题表明我们将探讨如何利用`WM_DRAWITEM`消息来改变Button的默认外观。 `WM_DRAWITEM`是Windows消息系统中的一个关键消息,它在窗口控件(如Button)需要被绘制时发送。当用户界面...

    ListView的Button点击更改Button本身背景

    当我们需要在ListView的每一项中包含一个Button,并实现点击Button时改变Button自身的背景,这就涉及到自定义Adapter、事件监听以及对View状态的理解。 首先,我们需要创建一个自定义的Adapter,因为ListView默认的...

    11、如何重写WinForm工程下Button控件实现渐变背景.zip

    在表单的设计器中,从工具箱中选择GradientButton控件,然后在属性窗口中配置文本和颜色,即可在运行时看到一个带有渐变背景的Button。 总结来说,通过重写Button控件并覆盖OnPaint方法,我们可以实现自定义的渐变...

    设置CButton控件的字体颜色和背景颜色

    这种方法允许你对按钮的外观进行高度自定义,而不仅仅是修改字体颜色和背景颜色。 总结一下,自定义CButton控件的字体颜色和背景颜色,需要以下步骤: 1. 创建一个继承自CButton的新类,如CTestBtn。 2. 在新类中...

    如何更改MFC按钮的背景色

    // 更改背景颜色 button-&gt;SetWindowTextW(_T("强制更改")); // 更改文字 button-&gt;SetTextColor(RGB(255, 255, 255)); // 更改字体颜色 button-&gt;SetTextHotColor(RGB(63, 72, 204)); // 更改高亮颜色 button-&gt;...

    彩色按钮可以改变button按钮的背景颜色

    c++ mfc,可以改变button按钮的背景颜色,采用的是重载壹按钮类, button, 方便于美化对话框界面的设计 c++ mfc,可以改变button按钮的背景颜色,采用的是重载壹按钮类, button, 方便于美化对话框界面的设计 c++ ...

    mfc使用的颜色button

    // 背景颜色 COLORREF m_FontColor; // 字体颜色 }; ``` 在这个类中,我们定义了颜色Button的背景色和字体色的设置及获取方法,并重写了CButton的`DrawItem`虚函数,该函数在所有者绘制模式下被调用,用于自定义...

    Button控件的字体颜色和背景颜色

    本文将详细讲解如何改变Button控件的字体颜色和背景颜色,以及如何实现只对单个控件进行刷新,而无需重新绘制整个页面。 在MFC中,我们通常使用CButton类来操作Button控件。CButton类是MFC提供的一个基类,它继承自...

    button颜色的控制

    你可以使用`color`属性改变按钮文本的颜色,使用`background-color`属性改变按钮背景色。例如: ```css button { background-color: #FF0000; /* 红色背景 */ color: #FFFFFF; /* 白色文本 */ } ``` 还可以...

    如何在WinCC运行系统中通过脚本来改变对象颜色(背景、边框、文本)?.docx

    这些脚本不仅能够改变对象的背景颜色,还可以改变文本颜色和边框颜色等其他颜色相关的属性。此外,由于WinCC支持32位颜色,因此开发者可以根据实际需求灵活地调整颜色及其透明度,从而实现更加丰富多样的视觉效果。...

    更改Button前景背景颜色VC源代码

    1. **colorbtn.cpp**:这是核心功能的实现文件,包含了自定义Button类的实现,即对标准Button控件进行扩展,添加设置和修改前景和背景颜色的功能。在这个文件中,你可能会看到`OnPaint()`函数的重写,用于绘制自定义...

    VC中WIN32AP为Button按钮加背景图片

    本文将详细讲解如何在VC中为Button控件添加背景图片,并实现根据按钮状态改变背景图片的效果。 首先,我们需要了解Win32 API中的Button控件。Button控件是窗口小部件,用于响应用户的点击操作。在VC中,我们通常...

    Button按钮的多种形式,可以给button添加颜色

    在iOS中,可以使用`tintColor`属性改变按钮的文字和图像颜色,或者使用`backgroundColor`属性更改按钮的背景颜色。 2. **滑动按钮(Slide Button)**: 滑动按钮是一种交互性更强的按钮形式,用户需沿着指定方向...

Global site tag (gtag.js) - Google Analytics