日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

VB与Java颜色值的转换

發布時間:2023/12/18 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB与Java颜色值的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正常的 RGB 顏色的有效范圍,是從 0 到 16,777,215 (&HFFFFFF&)。每種顏色的設置值(屬性或參數)都是一個四字節的整數。對于這個 范圍內的數,其高字節都是 0,而低三個字節,從最低字節到第三個字節,分別定義了紅、綠、藍三種顏色的值。紅、綠、藍三種成分都 是用 0 到 255 (&HFF) 之間的數表示。因此,可以用十六進制數按照下述語法來指定顏色:

&HBBGGRR&

BB 指定藍顏色的值,GG 指定綠顏色的值,RR 指定紅顏色的值。每個數段都是兩位十六進制數,即從 00 到 FF。&H808080&將最高位設置 為 1,就改變了顏色值的含義:顏色值不再代表一種 RGB 顏色,而是一種從 Windows"控制面板"指定的環境范圍顏色。這些數值對應的系統 顏色范圍是從 &H80000000 到 &H80000015。 以下就是這些特殊的系統顏色值及其含義:

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 after?vb3DHighlight

vbInfoText

0x80000017

Color of text in ToolTips

vbInfoBackground

0x80000018

Background color of ToolTips


首先,Java中的顏色的整數值是這樣組成的:0~7位是藍色值, 8~15位是綠色值, 16~23位是紅色值, 24~31位是Alpha值。一個標準的RGB 值轉成Java的需要設置最高8位為FF(默認的Alpha值)。此外,對于像VB中這些特殊的系統顏色來說,Java中的SystemColor被用來處理 各個操作系統不同的系統顏色。

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];} SystemColor通過靜態域初始化系統顏色的數組,我們可以利用它的初始化結果作為當前操作系統的系統顏色集合,來完成VB顏色到Java顏色的轉換。

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 colorSystem.out.println(tester.convertVB2JavaColor(0x80000007) == SystemColor.menuText.getRGB());// 2.Test for System colorSystem.out.println(tester.convertVB2JavaColor(0x004207) == (0xFF | 0x4207));// 3.Test for invalid input argumenttry {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 1javaColorHex = VB2JavaSystemColorMapping.get(vbColorHex);}else { throw new IllegalArgumentException("Illegal hex color argument: " + vbColorHex);}return javaColorHex;}}
簡單跑了下,不知道是否正確,有沒有人有寫這方面代碼的經驗?

轉載于:https://www.cnblogs.com/xiaomaohai/archive/2012/10/14/6157800.html

總結

以上是生活随笔為你收集整理的VB与Java颜色值的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。