דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. כיצד להשוות ערך range.Font.Color לצבע הקסדצימלי ב-VSTO?

כיצד להשוות ערך range.Font.Color לצבע הקסדצימלי ב-VSTO?

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 4 כותבים 412 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי
    #1

    מישהו יודע איך להשוות את הערך של range.Font.Color ב-VSTO לערך צבע הקסדצימלי?
    למרות כל הניסיונות שלי, לא הצלחתי לעשות זאת בהצלחה.
    אני מנסה להמיר את ערך ההקס שאני מקבל מה-XML של המסמך ב-Word לערך שמתאים לזה שאני מקבל מהפקודה:
    range.Font.Color
    אשמח לעזרה או כיוון לפתרון.

    ל תגובה 1 תגובה אחרונה
    0
    • ל מנותק
      ל מנותק
      לעזור לכולם
      השיב לpcinfogmach ב נערך לאחרונה על ידי
      #2
      פוסט זה נמחק!
      תגובה 1 תגובה אחרונה
      -2
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        @pcinfogmach הVBA מביא מספר שכשהוא מומר לhex הוא בסדר הפוך מהמקובל (בweb וגם בOpenXML).
        אם תמיר את המספר להקס ככה:

        color.ToString("X6")
        

        תקבל מחרוזת שזוג האותיות הראשון שלה צריכים להחליף מקום עם הזוג השלישי.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        pcinfogmachP תגובה 1 תגובה אחרונה
        1
        • pcinfogmachP מנותק
          pcinfogmachP מנותק
          pcinfogmach
          השיב לdovid ב נערך לאחרונה על ידי pcinfogmach
          #4

          @dovid

          זה מה שניסיתי:

          bool MatchColor(string hexColor, int decimalColor)
          {
              string toHex = decimalColor.ToString("X6");
              string adjustedHex = toHex.Substring(4, 2) + toHex.Substring(2, 2) + toHex.Substring(0, 2);
              return hexColor == adjustedHex ;
          }
          

          הממצאים:

          		hexColor	"#ED7D31"	string
          		decimalColor	-721354753	int
          		toHex	"D500FFFF"	string
          		adjustedHex	"FF00D5"	string
          
          תגובה 1 תגובה אחרונה
          0
          • pcinfogmachP מנותק
            pcinfogmachP מנותק
            pcinfogmach
            כתב ב נערך לאחרונה על ידי pcinfogmach
            #5
            פוסט זה נמחק!
            תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי
              #6

              @pcinfogmach כאשר המספר הוא חיובי אז זה כמו ש @dovid כתב,
              כאשר המספר הוא שלילי זה מייצג צבע מתוך ערכת הנושא
              עיין כאן הסבר מלא עם דוגמאות קוד
              https://www.wordarticles.com/Articles/Colours/2007.php

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              pcinfogmachP 2 תגובות תגובה אחרונה
              3
              • pcinfogmachP מנותק
                pcinfogmachP מנותק
                pcinfogmach
                השיב לyossiz ב נערך לאחרונה על ידי pcinfogmach
                #7

                @yossiz
                לא מצליח לפתוח את הקישור יש מצב ל-pdf של הכתבה?

                תגובה 1 תגובה אחרונה
                0
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי
                  #8

                  Word Articles_ Colours in 2007.pdf

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  4
                  • pcinfogmachP מנותק
                    pcinfogmachP מנותק
                    pcinfogmach
                    השיב לyossiz ב נערך לאחרונה על ידי pcinfogmach
                    #9

                    @yossiz
                    וואו! תודה רבה.
                    להלן תקציר תוכן הכתבה:
                    (אפשר לעשות דוקטורט בוורד רק מהנושא הזה 🙄 )

                    בכתבה מוצג קוד לחישוב דינאמי של הערכים השונים של גווני ערכת הנושא (בערכים דצימליים המומרים ל-hex מיוחד לוורד).
                    בנוסף, מופיע קוד לקבלת ערכי ה-hex הקלאסיים של צבעי ערכת הנושא

                    העיקרון של הקודים הללו מוסבר בתת-כתבה, והוא קצר וברור.

                    כמו כן, מוצג קוד המדמה את הגוונים ב-hex באמצעות HSL. מדובר בקוד מעט מורכב, ולא בהכרח חיוני — שכן בדיאלוג של Word יש רק ערכים סטטיים מסוימים. הדרך היחידה לייצר גוונים אחרים היא באמצעות הקוד שבכתבה, שרוב המשתמשים כלל אינם מכירים או מתעניינים בו.
                    כמו"כ אין קוד המחשב כיצד הדיאלוג ב-Word מפיק את הגוונים ועבור אלו צבעים. למעשה, קיימים שלושה סוגי חישוב גוונים בדיאלוג: רקע, טקסט והדגשה. ואפשר לעשות זאת בצורה סטטית.

                    pcinfogmachP תגובה 1 תגובה אחרונה
                    4
                    • pcinfogmachP מנותק
                      pcinfogmachP מנותק
                      pcinfogmach
                      השיב לpcinfogmach ב נערך לאחרונה על ידי pcinfogmach
                      #10

                      @pcinfogmach כתב בכיצד להשוות ערך range.Font.Color לצבע הקסדצימלי ב-VSTO?:

                      בכתבה מוצג קוד לחישוב דינאמי של הערכים השונים של גווני ערכת הנושא (בערכים דצימליים המומרים ל-hex מיוחד לוורד).

                      מצו"ב הקוד מתורגם ל-C# בדגש דווקא על בהירות והבנה (במחיר זניח של יעילות).

                      using System;
                      using Microsoft.Office.Interop.Word;
                      public class ThemeColorsHelperBase
                      {
                          // Color code components
                          private readonly string _hexPrefix = "0x";           // Prefix used for hexadecimal strings
                          private readonly string _themeColorFlag = "D";       // Identifier for theme color
                          private readonly string _zeroByte = "00";            // Unused byte in the color code
                          private readonly string _maxValue = "FF";            // Used when no tint/shade is applied
                      
                          /// <summary>
                          /// Generates an int representation of a theme color with its tint or shade.
                          /// </summary>
                          /// <param name="themeColorIndex">Theme color index (e.g., Accent1, Text1)</param>
                          /// <param name="tintAndShade">accepts percantage double (0.50, 0.25 etc.); positive (tint/lighten) or negative (shade/darken).</param>
                          /// <returns></returns>
                          public long GetThemeColor(WdThemeColorIndex themeColorIndex, double brightness)
                          {
                              string hex = GenerateThemeColorHex(themeColorIndex, brightness);
                              return Convert.ToInt64(hex, 16);
                          }
                      
                          private string GenerateThemeColorHex(WdThemeColorIndex themeColorIndex, double brightness)
                          {
                              string themeColorHex = ((int)themeColorIndex).ToString("X");
                              string tintHex = brightness >= 0 ? ((int)((1 - brightness) * 0xFF)).ToString("X2") : _maxValue;
                              string shadeHex = brightness < 0 ? ((int)((1 + brightness) * 0xFF)).ToString("X2") : _maxValue;
                              string fullHex = _hexPrefix + _themeColorFlag + themeColorHex + _zeroByte + tintHex + shadeHex;
                              return fullHex;
                          }
                      }
                      
                      תגובה 1 תגובה אחרונה
                      2

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום