//*************************************************************** // RichEditBox MenuFlyoutItem Click Events for different menus //*************************************************************** private void MnFontStyles_Click(object sender, RoutedEventArgs e) { // Set the editors font according to the MenuFlyoutItem selected MenuFlyoutItem item = (MenuFlyoutItem)sender; Windows.UI.Text.ParagraphStyle style = new Windows.UI.Text.ParagraphStyle(); if (item.Text == "Heading1") { style = Windows.UI.Text.ParagraphStyle.Heading1; } else if (item.Text == "None") { style = Windows.UI.Text.ParagraphStyle.None; } else if (item.Text == "Normal") { style = Windows.UI.Text.ParagraphStyle.Normal; } else if (item.Text == "Undefined") { style = Windows.UI.Text.ParagraphStyle.Undefined; } editor.Document.Selection.ParagraphFormat.Style = style; }
int sumRGB; // sum of the selected colors RGB //int pos, line, column; // for detecting line and column numbers //int selectedFontSize = 0; //string filenamee; // file opened inside of RTB public MainPage() { this.InitializeComponent(); // Initialize MenuFlyouts on startup with the appropriate MenuFlyout object MenuFlyout mnuSize = mnuFontSize; MenuFlyout mnuColor = mnuFontColor; // Fill Font Menu Flyout Items List string[] fonts = Microsoft.Graphics.Canvas.Text.CanvasTextFormat.GetSystemFontFamilies(); // Sort fonts a->z Array.Sort(fonts, (x, y) => String.Compare(x.ToString(), y.ToString())); foreach (string font in fonts) { MenuFlyoutItem mnFont = new MenuFlyoutItem(); mnFont.Text = font; mnuFontSelection.Items.Add(mnFont); mnFont.Click += MnFont_Click; } // Fill Font Size Menu Flyout Items List for (int i = 0; i < 90; i++) { MenuFlyoutItem mnFontSize = new MenuFlyoutItem(); mnFontSize.Text = i.ToString(); mnuSize.Items.Add(mnFontSize); mnFontSize.Click += MnFontSize_Click; } // FontColor list foreach (PropertyInfo prop in typeof(Colors).GetProperties()) { if (prop.PropertyType.FullName == "Windows.UI.Color") { colorList.Add(prop.Name); } } // Fill FontColor Menu Flyout Items List foreach (string color in colorList) { MenuFlyoutItem mnFontColor = new MenuFlyoutItem(); mnFontColor.Text = color; mnuColor.Items.Add(mnFontColor); mnFontColor.Click += MnFontColor_Click; } // Fill BackColor for each color in the Font Color Menu Flyout for (int i = 0; i < mnuColor.Items.Count; i++) { // Create Color object Color selectedColor = new Color(); selectedColor = (Color)typeof(Colors).GetProperty(colorList[i]).GetValue(selectedColor); // Set background color of menu items according to its color mnuColor.Items[i].Background = new SolidColorBrush(selectedColor); // Set the text color depending on if the barkground is darker or lighter // Create Color object Color col = Color.FromArgb(selectedColor.A, selectedColor.R, selectedColor.G, selectedColor.B); // 255,255,255 = White and 0,0,0 = Black // Max sum of RGB values is 765 -> (255 + 255 + 255) // Middle sum of RGB values is 382 -> (765/2) // Color is considered darker if its <= 382 // Color is considered lighter if its > 382 sumRGB = ConvertToRGB(col); // get the color objects sum of the RGB value if (sumRGB <= MIDDLE) // Darker Background { mnuColor.Items[i].Foreground = new SolidColorBrush(Colors.White); // Set to white text } else if (sumRGB > MIDDLE) // Lighter Background { mnuColor.Items[i].Foreground = new SolidColorBrush(Colors.Black); // Set to black text } } // Fill FontStyle MenuFlyoutItem List Windows.UI.Text.ParagraphStyle[] styles; styles = new Windows.UI.Text.ParagraphStyle[4]; styles[0] = Windows.UI.Text.ParagraphStyle.Heading1; styles[1] = Windows.UI.Text.ParagraphStyle.None; styles[2] = Windows.UI.Text.ParagraphStyle.Normal; styles[3] = Windows.UI.Text.ParagraphStyle.Undefined; for (int i = 0; i < styles.Count(); i++) { MenuFlyoutItem mnFontStyles = new MenuFlyoutItem(); mnFontStyles.Text = styles[i].ToString(); mnuFontStyles.Items.Add(mnFontStyles); mnFontStyles.Click += MnFontStyles_Click; } }