private static void GetBlock4Alpha(Binary binary, int[,] alphas, int[] colorVals) { ulong n = binary.ReadUInt64(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { alphas[j, i] = (int)((n & 15) * 17); n >>= 4; } } ushort c0 = binary.ReadUInt16(); ushort c1 = binary.ReadUInt16(); Color[] color = new Color[4]; color[0] = ColorHelp.From565(c0); color[1] = ColorHelp.From565(c1); color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1); color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2); for (int i = 0; i < 4; i++) { colorVals[i] = color[i].ToArgb() & 0x00FFFFFF; } }
private static void GetBlock8RelAlpha(Binary binary, int[,] alphas, int[] colorVals) { ulong n = binary.ReadUInt64(); int a0 = (byte)(n & 0xFF); n >>= 8; int a1 = (byte)(n & 0xFF); n >>= 8; int[] a = new int[8]; if (a0 <= a1) { a[0] = a0; a[1] = a1; a[2] = (4 * a0 + 1 * a1) / 5; a[3] = (3 * a0 + 2 * a1) / 5; a[4] = (2 * a0 + 3 * a1) / 5; a[5] = (1 * a0 + 4 * a1) / 5; a[6] = 0; a[7] = 255; } else { a[0] = a0; a[1] = a1; a[2] = (6 * a0 + 1 * a1) / 7; a[3] = (5 * a0 + 2 * a1) / 7; a[4] = (4 * a0 + 3 * a1) / 7; a[5] = (3 * a0 + 4 * a1) / 7; a[6] = (2 * a0 + 5 * a1) / 7; a[7] = (1 * a0 + 6 * a1) / 7; } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { alphas[j, i] = a[n & 7]; n >>= 3; } } ushort c0 = binary.ReadUInt16(); ushort c1 = binary.ReadUInt16(); Color[] color = new Color[4]; color[0] = ColorHelp.From565(c0); color[1] = ColorHelp.From565(c1); color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1); color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2); for (int i = 0; i < 4; i++) { colorVals[i] = color[i].ToArgb() & 0x00FFFFFF; } }
public void CreateMainPageMenu(HotelMenuPower hotelMenu, int index) { PageMain page = this.UIElement as PageMain; MainPageMenuButton button = new MainPageMenuButton(); button.Text = hotelMenu.Name; var color_argb = ColorHelp.GetARGByStr(hotelMenu.color); button.BackGround = new SolidColorBrush(Color.FromArgb(color_argb[0], color_argb[1], color_argb[2], color_argb[3])); button.Src = hotelMenu.img; switch (hotelMenu.id) { case 1: button.Click((s, e) => { VM_PageTest vM_PageTest = new VM_PageTest(); VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest.UIElement as Page), true); }); break; case 2: button.Click((s, e) => { VM_PageTest2 vM_PageTest2 = new VM_PageTest2(); VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest2.UIElement as Page), true); }); break; case 3: button.Click((s, e) => { VM_PageTest vM_PageTest1 = new VM_PageTest(); VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest1.UIElement as Page), true); }); break; default: break; } if (index >= 4) { page.MainPage_MenuPanel2.Children.Add(button); } else { page.MainPage_MenuPanel.Children.Add(button); } }
public void FocusButton(string title) { foreach (string key in menuButtons.Keys) { if (key == title) { var bs = ColorHelp.GetARGByStr(MyColors.MainWindow_Blue); menuButtons[key].Background = new SolidColorBrush(Color.FromArgb(bs[0], bs[1], bs[2], bs[3])); } else { var bs = ColorHelp.GetARGByStr(MyColors.MainWindow_Gray); menuButtons[key].Background = new SolidColorBrush(Color.FromArgb(bs[0], bs[1], bs[2], bs[3])); } } }
private static void GetBlockNoAlpha(Binary binary, int[,] alphas, int[] colorVals) { ushort c0 = binary.ReadUInt16(); ushort c1 = binary.ReadUInt16(); Color[] color = new Color[4]; color[0] = ColorHelp.From565(c0); color[1] = ColorHelp.From565(c1); if (c0 <= c1) { color[2] = ColorHelp.MixRatio(color[0], color[1], 1, 1); color[3] = Color.FromArgb(0, 0, 0); } else { color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1); color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2); } for (int i = 0; i < 4; i++) { colorVals[i] = color[i].ToArgb(); } }
private static (ushort, ushort, int[, ]) ReduceColors4(Color[] colors) { int maxDist = 0; int maxi0 = 0, maxi1 = 0; for (int i1 = 0; i1 < 16; i1++) { for (int i2 = 0; i2 < i1; i2++) { int dist = (colors[i1].R - colors[i2].R) * (colors[i1].R - colors[i2].R) + (colors[i1].G - colors[i2].G) * (colors[i1].G - colors[i2].G) + (colors[i1].B - colors[i2].B) * (colors[i1].B - colors[i2].B); if (dist >= maxDist) { maxDist = dist; maxi0 = i1; maxi1 = i2; } } } ushort b0 = ColorHelp.To565(colors[maxi0]); ushort b1 = ColorHelp.To565(colors[maxi1]); ushort b0new, b1new; Color[] newColor = new Color[4]; if (b0 < b1) { b0new = b1; b1new = b0; } else { b0new = b0; b1new = b1; } newColor[0] = ColorHelp.From565(b0new); newColor[1] = ColorHelp.From565(b1new); newColor[2] = ColorHelp.MixRatio(newColor[0], newColor[1], 2, 1); newColor[3] = ColorHelp.MixRatio(newColor[0], newColor[1], 1, 2); int[,] colorIndex = new int[4, 4]; for (int i = 0; i < 16; i++) { int minDist = 3 * 256 * 256; int minj = 0; for (int j = 0; j < 4; j++) { int dist = (colors[i].R - newColor[j].R) * (colors[i].R - newColor[j].R) + (colors[i].G - newColor[j].G) * (colors[i].G - newColor[j].G) + (colors[i].B - newColor[j].B) * (colors[i].B - newColor[j].B); if (dist < minDist) { minDist = dist; minj = j; } } colorIndex[i % 4, i / 4] = minj; } return(b0new, b1new, colorIndex); }
private static uint GetPixel1555(Stream stream) { ushort b = Binary.ReadUInt16(stream, true); return((uint)ColorHelp.From1555(b).ToArgb()); }