&HBBGGRR&
BB 指定蓝颜色的值,GG 指定绿颜色的值,RR 指定红颜色的值。每个数段都是两位十六进制数,即从 00 到 FF。&H808080&将最高位设置
Constant | Value | Description |
---|---|---|
vbScrollBars | 0x80000000 | Scroll bar color |
vbDesktop | 0x80000001 | Desktop color |
vbActiveTitleBar | 0x80000002 | Color of the title bar for the active window |
vbInactiveTitleBar | 0x80000003 | Color of the title bar for the inactive window |
vbMenuBar | 0x80000004 | Menu background color |
vbWindowBackground | 0x80000005 | Window background color |
vbWindowFrame | 0x80000006 | Window frame color |
vbMenuText | 0x80000007 | Color of text on menus |
vbWindowText | 0x80000008 | Color of text in windows |
vbTitleBarText | 0x80000009 | Color of text in caption, size box, and scroll arrow |
vbActiveBorder | 0x8000000A | Border color of active window |
vbInactiveBorder | 0x8000000B | Border color of inactive window |
vbApplicationWorkspace | 0x8000000C | Background color of multiple-document interface (MDI) applications |
vbHighlight | 0x8000000D | Background color of items selected in a control |
vbHighlightText | 0x8000000E | Text color of items selected in a control |
vbButtonFace | 0x8000000F | Color of shading on the face of command buttons |
vbButtonShadow | 0x80000010 | Color of shading on the edge of command buttons |
vbGrayText | 0x80000011 | Grayed (disabled) text |
vbButtonText | 0x80000012 | Text color on push buttons |
vbInactiveCaptionText | 0x80000013 | Color of text in an inactive caption |
vb3DHighlight | 0x80000014 | Highlight color for 3-D display elements |
vb3DDKShadow | 0x80000015 | Darkest shadow color for 3-D display elements |
vb3DLight | 0x80000016 | Second lightest 3-D color aftervb3DHighlight |
vbInfoText | 0x80000017 | Color of text in ToolTips |
vbInfoBackground | 0x80000018 | Background color of ToolTips |
public final static SystemColor desktop = new SystemColor((byte)DESKTOP);
public final static SystemColor activeCaption = new SystemColor((byte)ACTIVE_CAPTION);
public final static SystemColor activeCaptionText = new SystemColor((byte)ACTIVE_CAPTION_TEXT);
...
private static int[] systemColors;
static {
updateSystemColors();
}
/**
* Called from <init> & toolkit to update the above systemColors cache.
*/
private static void updateSystemColors() {
if (!GraphicsEnvironment.isHeadless()) {
Toolkit.getDefaultToolkit().loadSystemColors(systemColors);
}
}
private SystemColor(byte index) {
super(0, 0, 0);
value = index;
}
public int getRGB() {
return systemColors[value];
}
package com.cdai.jd;
import java.awt.SystemColor;
import java.util.HashMap;
public class SystemColorTest {
public static void main(String[] args) {
SystemColorTest tester = new SystemColorTest();
// 1.Test for Palette color
System.out.println(tester.convertVB2JavaColor(0x80000007) == SystemColor.menuText.getRGB());
// 2.Test for System color
System.out.println(tester.convertVB2JavaColor(0x004207) == (0xFF | 0x4207));
// 3.Test for invalid input argument
try {
System.out.println(tester.convertVB2JavaColor(0x8100000A));
} catch (Exception e) {
System.out.println("Expect exception here.");
}
}
private static HashMap<Integer, Integer> VB2JavaSystemColorMapping =
new HashMap<Integer, Integer>();
/**
* Color constants refer to:
* http://msdn.microsoft.com/en-us/library/office/gg264801.aspx
*/
static {
VB2JavaSystemColorMapping.put(0x80000000, SystemColor.scrollbar.getRGB());
VB2JavaSystemColorMapping.put(0x80000001, SystemColor.desktop.getRGB());
VB2JavaSystemColorMapping.put(0x80000002, SystemColor.activeCaption.getRGB());
VB2JavaSystemColorMapping.put(0x80000003, SystemColor.inactiveCaption.getRGB());
VB2JavaSystemColorMapping.put(0x80000004, SystemColor.menu.getRGB());
VB2JavaSystemColorMapping.put(0x80000005, SystemColor.window.getRGB());
VB2JavaSystemColorMapping.put(0x80000006, SystemColor.scrollbar.getRGB()); //Window frame color?
VB2JavaSystemColorMapping.put(0x80000007, SystemColor.menuText.getRGB());
VB2JavaSystemColorMapping.put(0x80000008, SystemColor.windowText.getRGB());
VB2JavaSystemColorMapping.put(0x80000009, SystemColor.activeCaptionText.getRGB());
VB2JavaSystemColorMapping.put(0x8000000A, SystemColor.activeCaptionBorder.getRGB());
VB2JavaSystemColorMapping.put(0x8000000B, SystemColor.inactiveCaptionBorder.getRGB());
VB2JavaSystemColorMapping.put(0x8000000C, SystemColor.scrollbar.getRGB()); //Background color of multiple-document interface (MDI) applications?
VB2JavaSystemColorMapping.put(0x8000000D, SystemColor.textHighlight.getRGB());
VB2JavaSystemColorMapping.put(0x8000000E, SystemColor.textHighlightText.getRGB());
VB2JavaSystemColorMapping.put(0x8000000F, SystemColor.scrollbar.getRGB()); //Color of shading on the face of command buttons?
VB2JavaSystemColorMapping.put(0x80000010, SystemColor.scrollbar.getRGB()); //Color of shading on the edge of command buttons?
VB2JavaSystemColorMapping.put(0x80000011, SystemColor.textInactiveText.getRGB());
VB2JavaSystemColorMapping.put(0x80000012, SystemColor.controlText.getRGB());
VB2JavaSystemColorMapping.put(0x80000013, SystemColor.inactiveCaptionText.getRGB());
VB2JavaSystemColorMapping.put(0x80000014, SystemColor.controlHighlight.getRGB());
VB2JavaSystemColorMapping.put(0x80000015, SystemColor.controlDkShadow.getRGB());
VB2JavaSystemColorMapping.put(0x80000016, SystemColor.controlLtHighlight.getRGB());
VB2JavaSystemColorMapping.put(0x80000017, SystemColor.infoText.getRGB());
VB2JavaSystemColorMapping.put(0x80000018, SystemColor.info.getRGB());
}
/**
* Convert color hex value in VB to Java color hex.
*
* @param vbColorHex 0x80000000 - 0x80000018 for VB system color,
* 0x00AB1234 for palette color
*
* @return Bits 24-31 are alpha (FF as default),
* 16-23 are red,
* 8-15 are green,
* 0-7 are blue
*/
public int convertVB2JavaColor(int vbColorHex) {
int javaColorHex;
int highByte = (vbColorHex >>> 24);
if (highByte == 0) { // Palette color if high byte is 0.
javaColorHex = 0xFF | vbColorHex;
}
else if (highByte == 128) { // System color if highest bit is 1
javaColorHex = VB2JavaSystemColorMapping.get(vbColorHex);
}
else {
throw new IllegalArgumentException("Illegal hex color argument: " + vbColorHex);
}
return javaColorHex;
}
}
简单跑了下,不知道是否正确,有没有人有写这方面代码的经验?