Office Addin: Umwandeln einer RGB Systemfarbe in eine Word/Office-Farbe
Wie wandelt man eine Systemfarbe (System.Color) um in eine Microsoft Office/Word Farbe ?
Man kann eine Systemfarbe nicht direkt per Integer Werte in eine Word-Farbe umwandeln sondern man muss die einzelnen Farben mit einem Hexadezimal-Werte multiplizieren und anschliessend die Hex-Farben summieren
Umrechnung RGB Integer-Farben in Word Farbe
(Word.WdColor)(red + (0x100 * green) + (0x10000 * blue));
|
Oder als C# Umrechnungsmethode
private Word.WdColor get_Word_Color_RGB(int red,int green,int blue)
{
Color sysColor = Color.FromArgb(0, red, green, blue);
return (Word.WdColor)(sysColor.R + 0x100 * sysColor.G + 0x10000 * sysColor.B);
}
|
Betrifft: Erstellen einer benutzerdefinierten Ribbonbar unter Microsoft Office / Word, Excel, Outlook, Powerpoint
Beispiel Word Ribbonbar: Farbe einstellen einer Titel-Zeile
Der Button in der Ribbonbar soll mit dem Click Event die Farbe der ersten Zeile ändern.
In der c# Codebehind Datei wird dann die Farbe geändert mit dem Code:
range.Font.Color = (Word.WdColor)(0 + 0x100 * 112 + 0x10000 * 192);
|
Zur einfacheren Handhabung wurde die Umrechnung in eine separate Methode ausgelagert.
Kompletter Code für die Word-Ribbonbar
private void btnFormat_Title_Click(object sender, RibbonControlEventArgs e)
{
//-----------------< fx_Format_Title_Caption() >-----------------
//*convert first line of a document to the html Title format
//< init >
Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
Word.Application app = Globals.ThisAddIn.Application;
//</ init >
Word.Range range_Line = doc.Paragraphs[1].Range;
range_Line.Font.Bold = 1;
range_Line.Font.Size = 14;
range_Line.Font.Color = get_Word_Color_RGB(0,112,192);
//-----------------</ fx_Format_Title_Caption() >-----------------
}
|
private Word.WdColor get_Word_Color_RGB(int red,int green,int blue)
{
//-------< get_Word_Color_RGB() >----------
//*convert Red Green Blue to Word/Office Color
//*using Microsoft.Office.Interop.Word.WdColor
Color sysColor = Color.FromArgb(0, red, green, blue);
return (Word.WdColor)(sysColor.R + 0x100 * sysColor.G + 0x10000 * sysColor.B);
//-------</ get_Word_Color_RGB() >----------
}
|
Die RGB Rot Grün Blau Werte einer Farbe erhält man bei Word, indem man einen Text markiert und anschliessend die benutzerdefiniert Farbe abfrägt.
Subject: Office Ribbonbar, Ribbon, Visual Studio, Word, Excel, Office, PowerPoint, Outlook, Addin