לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 27-09-2007, 20:14
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
JS color picker (בחירת צבע ב-JS)

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

מתוך איזה דחף רגעי בניתי את דף ה-HTML הבא:

https://2007-uploaded.fresh.co.il/2...7/85993960.html (ממליץ להעיף מבט)

הקוד שבונה את הדף הוא:
קוד:
<html> <body topmargin=0 leftmargin=0 rightmargin=0> <table border=1 cellspacing=0 cellpadding=0 width=100%> <script> function over(num) { switch (num) { case 110: return "AA"; break; case 121: return "BB"; break; case 132: return "CC"; break; case 143: return "DD"; break; case 154: return "EE"; break; case 165: return "FF"; defult: return "FF"; } } function td(num) { if (num < 10) return "0" + num; else if (num < 100) return num; else return over(num); } var i = 0; var j = 0; var k = 0; for (i = 0; i < 170; i+= 11) { document.write('<tr>'); for (j = 0; j < 170; j+= 11) { for (k = 0; k < 170; k+= 11) document.write('<td bgcolor=#' + td(i) + td(j) + td(k) + ' onClick="document.getElementById(\'sel\').value = \'#' + td(i) + td(j) + td(k) + '\';" onMouseOver="document.getElementById(\'col\').value = \'#' + td(i) + td(j) + td(k) + '\';"> &nbsp</td>'); } document.write('</tr>'); } </script> </table> Over: <input type="text" id="col"><br> Selected: <input type="text" id="sel"> </body> </html>


זה עובד והכל נחמד, אבל קוד הצבעים שהסקריפט מייצר הוא סמטרי עבור כל צבע, אין למשל FC451D, אלא רק FF33CC (כלומר שני תווי הצבע זהים).

רציתי לבנות בוחר צבעים קצת יותר מורכב שיתן אפשרות למגוון רחב יותר של צבעים (תוך תחימה שלהם לתחום מסויים, ככל הנראה כדי למנוע פיצוץ של הדף) ולצורך כך בניתי את 3 הפונק' הבאות:
קוד:
function hex_dig(n) { switch (n) { case 10: return "A"; break; case 11: return "B"; break; case 12: return "C"; break; case 13: return "D"; break; case 14: return "E"; break; case 15: return "F"; break; default: return n; } } function to_hex(num) { if (num == 0) return ""; return String(to_hex(Math.floor(num / 16))) + String(hex_dig(num % 16)); }

פונק' עם פונקציית עזר שמחשבת מחרוזת הקסדצימאלית ממספר דצימאלי.
קוד:
function extend(str, len) { var i=0; for (i = str.length; i < len; i++) str = '0' + str; return str; }

פונק' שמרחיבה מחרוזת עם אפסים משמאל (לצרכים מובנים מאליהם - אורך קידוד צבע הוא 6).

מה שהסתבכתי איתו הוא בניית הלולאה שתעשה את זה באופן "יפה".
אם תשימו לב בדף שצרפתי בתחילת ההודעה, תראו שהצבעים יוצאים לא רציפים, אלא מתקבלים מלבנים של גוון מסויים, ואז כאילו מתאפס ומתחיל גוון קצת שונה של אותם הצבעים.
זה מכוער...
שברתי את הראש אבל לא מצאתי קונפיגורציה לבנייה של לולאה\לולאות שיבנו את הצבעים ב-gradient יפה...
למישהו יש רעיון בשבילי?

תודה מראש

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 28-09-2007, 20:16
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 2 שנכתבה על ידי The AcE שמתחילה ב "אומנם אתה יכול להשתמש ב HEX..."

למען האמת - לא חידשת לי דבר
אני יודע שלמעשה בניית קוד הצבע של ה-HTML היא ערכי ה-RGB בבסיס הקסדצימאלי (2 תווים).
הנקודה היא שכשאני מרכיב אותם, איך שלא ניסיתי אני לא מצליח לקבל המשכיות של הצבעים.

למען האמת הגעתי למסקנה שהבעיה היא בעובדה שיש לי השתנות ב-3 צירים (אדום, כחול, ירוק) אבל אני בונה טבלה דו-מימדית, מה שאומר שחסר לי מימד בשביל לצור המשכיות - צריך קוביה במקום ריבוע.

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 28-09-2007, 20:26
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 4 שנכתבה על ידי tnadav1 שמתחילה ב "יכולה להיות בטבלה 3..."

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

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

איפה בכל זה נכנס השינוי של הירוק..?

הבעיה היא שפונק' הצבע היא פונקציה של 3 משתנה - אדום, ירוק, כחול.
ייצוג גרפי של פונק' כזו דורש 4 מימדים: ציר אדום, ציר ירוק, ציר כחול וציר הערך (הצבע המתקבל).

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 30-09-2007, 22:56
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 1 שנכתבה על ידי Dark Knight שמתחילה ב "JS color picker (בחירת צבע ב-JS)"

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

ראשית, אין ממש אפשרות ליצור את כל הגוונים עם מעבר חלק ביניהם, אלא אם אתה רוצה לבצע כפילויות של רוב הצבעים.
כדי להתקדם, כדאי שתצייר בדמיונך איך אתה רוצה שזה יראה, אולי גם תעשה איזו סקיצה בסיסית בתוכנת איור כלשהי.
ניקח/תקח לדוגמה את "בוחר הצבעים" המשולב כמעט בכל תוכנת גרפיקה ובכל מערכת הפעלה גרפית, מראהו מבוסס על שני חלקים, האחד מלבן המכיל צבעים רבים עם מעבר חלק אך קצר בין צבע לצבע, והשני, לוח שלאחר לחיצה על גוון כלשהו (כמובן שבעת הפתיחה יש את גוון ברירת המחדל), יציג מספר גוונים רב יותר הקרובים לצבע הנבחר.
אגב, כמובן שתוכן לוח הגוונים משתנה בהתאם לבסיס הצבעים הנבחר שיכול להיות rgb, cmyk, hls או אחר.

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

ראשית, תעבור על הקטע של הצגת הצבעים, תשחק עם האלגוריתם שיצור בשבילך סדרת צבעים מקיפה אך "מתומצתת". לאחמ"כ תעבור לעבוד על תצוגת הגוונים.
תוכל לנסות להתבונן בלוחות קיימים כדי לנסות להבין כיצד ליצור זאת, ותוכל אף לחפש קוד פתוח בנושא. לדוגמה, יש לשועל תוסף כזה שלבטח בחלקו העיקרי כתוב ב-js, תפתח את קבצי הקוד שלו, תתבונן ונסה ללמוד ממנו (כמדומני שהוא נקרא color picker).

בהצלחה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:05

הדף נוצר ב 0.06 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר