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

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

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

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

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

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

    ל תגובה 1 תגובה אחרונה
    0
    • pcinfogmachP pcinfogmach

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

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

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

        color.ToString("X6")
        

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

        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
        pcinfogmachP תגובה 1 תגובה אחרונה
        1
        • dovidD dovid

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

          color.ToString("X6")
          

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

          pcinfogmachP
          pcinfogmachP
          pcinfogmach
          כתב ב נערך לאחרונה על ידי 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
              • yossizY yossiz

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

                pcinfogmachP
                pcinfogmachP
                pcinfogmach
                כתב ב נערך לאחרונה על ידי pcinfogmach
                #7

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

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

                  Word Articles_ Colours in 2007.pdf

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה
                  👈 רוצים כתובת מייל בעברית? כנסו למייל.קום 👉

                  תגובה 1 תגובה אחרונה
                  4
                  • yossizY yossiz

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

                    pcinfogmachP
                    pcinfogmachP
                    pcinfogmach
                    כתב ב נערך לאחרונה על ידי pcinfogmach
                    #9

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

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

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

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

                    pcinfogmachP תגובה 1 תגובה אחרונה
                    4
                    • pcinfogmachP pcinfogmach

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

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

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

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

                      pcinfogmachP
                      pcinfogmachP
                      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

                      שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                      נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                      בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                      הרשמה התחברות
                      תגובה
                      • תגובה כנושא
                      התחברו כדי לפרסם תגובה
                      • מהישן לחדש
                      • מהחדש לישן
                      • הכי הרבה הצבעות


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

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

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