עבור לתוכן

טבלת צבעים בC#

Featured Replies

פורסם

אני רוצה לעבור על מערך של מספרים, ולכל קבוצת מספרים לתת אותו ערך של צבע.

הכוונה היא שאם קבוצת מספרים במערך מסומנת ב-1 כולם יקבלו את הצבע הכחול, 2 אדום..וכך הלאה.

יש אפשרות לעשות את זה עם שימוש בערך אקראי?

כי אם אני נכנסת ללולאה עבור כל אחד מהתאים ,הערך משתנה ללא תלות במספר.

דוגמא לאיך שזה אמור להראות:

לפני:

http://homepages.inf.ed.ac.uk/rbf/HIPR2/images/art8lab1.gif

אחרי:

http://homepages.inf.ed.ac.uk/rbf/HIPR2/images/art8lab2.gif

זה הקטע קוד:

      for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
if (myArr[i, j] == 0)
comp.SetPixel(i, j, Color.FromArgb(255, 255, 255));
[b]
if (myArr[i,j] > 0)
{
int n = myArr[i, j]%100;
if (n*2+20 > 255)
{
n = myArr[i, j] % 10;
}
int blue = n ;
int red = n*2;
int green = n*2+20 ;

comp.SetPixel(i, j, Color.FromArgb(red, green ,blue));

}[/b] }
}

אם המספר הוא 0 הפיקסל נצבע בלבן, אחרת כל קבוצת פיקסלים צריכה לקבל צבע אחר.

מה שניסיתי זה להשתמש בפעולות של * ו-+ הבעיה היא שהצבעים יוצאים קרובים מידי ולא רואים את ההבדל.

עוד בעיה היא שהמספרים לא מסודרים לפי הסדר....

זה לא הולך לפי 1,2,3... אלא 1,5, 20... כל תמונה אחרת.

מה אפשר לכתוב בין הסוגריים בשביל שזה יעבוד ?

ועוד דבר-איך אפשר ליצור PROGRESS BAR שרץ בזמן שהקטע קוד מתבצע ומגיע ל100% שהוא מסתיים?

פורסם

לא הבנתי ממש מה את רוצה, אבל סתם שאלה לגבי הקטע קוד הבא שרשמת:

int n = myArr[i, j]%100;
if (n*2+20 > 255)
{
n = myArr[i, j] % 10;
}

התנאי הזה אף פעם לא יהיה נכון, כי את עושה %100, אז התוצאה תהיה קטנה מ 100, גם את תכפילו ב 2 ותוסיפי 20 כמו שרשמת, n לא יעבור את ה 255, אז התנאי הזה שכתבת אף פעם לא מתקיים.

פורסם
  • מחבר

תודה על ההערה. תקנתי..

פשוט הקוד הזה עבר הרבה ( יותר מידי ) שינוים אז את הבדיקות כבר השארתי לכל מקרה ..

ומה בדיוק לא הבנת ? אני יכולה לנסות להסביר שוב ... :)

פורסם

הממ... מה לא הבנתי...

א. האם זה תרגיל שנתנו לך או סתם משהו שאת מנסה לעשות?

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

ג. מה גודל המערך, ומה טווח הערכים של המספרים שיש בו? אולי תשקלי להגדיר מראש טבלה של צבעים עבור כל מספר?

או שתעיפי מבט פה http://www.vcskicks.com/color-uint.php

יש שם דוגמא לפונקציה שתמיר UINT ל COLOR

פורסם
  • מחבר

זה חלק מפרויקט של מכון ויצמן - מדעי המחשב באקדמיה ותעשיה...

המערך מייצג תמונה שנקלטת בהתחלה, אז הגודל שלו הוא בעצם בגודל של התמונה בפיקסלים.

כל תא=פיקסל 1.

בהתחלה התמונה מומרת לשחור לבן, והמערך נבנה מערכים של 0 (ללבן) ו-1 (לשחור).

אחר כך יש פונקציה שמפרידה בין האובייקטים, וכל קבוצה של אחדים מקבלת מספר שונה בטווח של 1-10,000..

אוקי, ניסיתי את הפונקציה הזאת אבל זה הופך את הכל לאותו צבע :

http://www.siz.co.il/my.php?i=22zun1yiv5im.jpg

פורסם

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

הפונקציה מקבל מספר בעל בתים (UNIT), ומחלקת אותו ל 4 בתים נפרדים, כל בית מייצג צבע, RED GRREN BLUE ו ALPHA

הגיוני מאוד שמה שזה יעשה עבור המספר 1 ו 2 למשל יראה כמעט זהה, ב RGB יש לך כלכך הרבה צבעים, שזה ברור שיצאו לך תוצאות קרובות אם המספרים קרובים.

פורסם
  • מחבר

זהו, זה גם לא ממש הגיוני. זה לא צבע אפילו, זה שקוף....

הנה שוב התמונה: http://www.up2me.co.il/v.php?file=75869745.jpg

(צריך לסמן את זה בשביל לראות...)

מה הסימן הזה : "<<" עושה ?

פורסם

הסימנים << ו >> מזיזים ביטים שמאלה וימינה.

זה יוצא לך שקוף בטח, כי המספרים מאוד קטנים, ו המשתנה A מקבל 0, שזה כנראה רמת אטימות 0 (שקוף)

תנסי לשנות את הפונקציה, כך ש byte a יקבל ערך קבוע, נגיד 150, תראי אם זה משנה משהו.

(אני לא יודע אם 255 נחשב שקוף או 0, אז תבדקי אחד מהם, או משהו באמצע כמו 150 סתם ככה)

פורסם
  • מחבר

זה עובד ! תודה רבה :yelclap:

פורסם

יופי בהצלחה!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים