• 9:31 صباحاً
logo




تركيب الألوان من string الى color

إضافة رد
Like Tree1Likes

موقوف
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
10 - 08 - 2019, 01:25 PM
  #1
تووووووت غير متواجد حالياً  
افتراضي تركيب الألوان من string الى color
بسم الله الرحمن الرحيم
بعد جهد جهيد شهورا طويلة! وصلت للتالي:
ركب نص string فيه قيمة خانة اللون --خانة الأحمر وخانة الأخضر وخانة الأزرق
اجمعهم مع بعض كنص مع إضافة حرف C المعبر عن قيم الألوان
وأخيرا حولهم من نص الى لون,
وتكمن أهميتها في القدرة على تدريج الألوان برمجياً:
مثال أسفل: نريد كتابة "MOHAMMED SAFAR ALOTAIBI WECOMES ALL " ونريدها على شكل دالة موجية دائرية ونريد الألوان تتغير عشوائياً مع كل ثانية,
المشكلة فقط في كيفية تغيير الأولوان في كل مرة "ثانية" وهذا الموضوع يحلها,

كود:
int OnInit()
{
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   EventKillTimer();
   ObjectsDeleteAll();
}
double X1=200;


double A1=90;



double V360=1440;
int GGXG=-1;
int GGYG=-1;
string A[]={"M","O","H","A","M","M","E","D"," ","S","A","F","A","R"," ","A","L","O","T","A","I","B","I"," ","W","E","L","C","O","M","E","S"," ","A","L","L"};

void OnTimer()
{   GGXG++;

   if(GGXG>300)GGXG=0;
   for(int i=0;i<160;i++)
   {
      double XX1=500+1.5*X1*MathCos(double(i*A1*M_PI/V360));
      double YY1=300+X1*MathSin(double(i*A1*M_PI/V360));

      if(i>=GGXG && i<ArraySize(A)+GGXG && A[i-GGXG]!=" ")
      {
         string ran1=(string)MathMod(MathRand(),256);
         string ran2=(string)MathMod(MathRand(),256);
         string ran3=(string)MathMod(MathRand(),256);
         string a="C"+"'"+ran1+","+ran2+","+ran3+"'";
         color ran=StringToColor(a);
         Create_Button("IND_SIN_"+i,A[i-GGXG],   XX1-5,YY1-5,   35,35,   12,ran, C'255,255,0', C'255,255,0', "FOURIER_2");
      }
      else
      {
         ObjectDelete("IND_SIN_"+i);
      }
   }

}
void Create_Button(string Inpname,string text,  int X,   int Y,   int W,   int H,   int width,   color BackColor, color TextColor, color borderColor, string TOOL)
{
   ObjectDelete(0,Inpname);
   ObjectCreate(0,Inpname,OBJ_BUTTON,0,0,0);
   ObjectSetInteger(0,Inpname,OBJPROP_XSIZE,W);
   ObjectSetInteger(0,Inpname,OBJPROP_YSIZE,H);
   ObjectSetInteger(0,Inpname,OBJPROP_CORNER,CORNER_LEFT_UPPER);
   ObjectSetInteger(0,Inpname,OBJPROP_XDISTANCE,X);
   ObjectSetInteger(0,Inpname,OBJPROP_YDISTANCE,Y);
   ObjectSetInteger(0,Inpname,OBJPROP_FONTSIZE,width);
   ObjectSetInteger(0,Inpname,OBJPROP_HIDDEN,true);
   ObjectSetString(0,Inpname,OBJPROP_TOOLTIP,TOOL);
   ObjectSetInteger(0,Inpname,OBJPROP_BORDER_TYPE,BORDER_RAISED);
   ObjectSetInteger(0,  Inpname,OBJPROP_BACK,FALSE); 
   ObjectSetInteger(0,  Inpname,OBJPROP_SELECTABLE,FALSE); 
   ObjectSetInteger(0,  Inpname,OBJPROP_SELECTED,FALSE); 
   ObjectSetInteger(0,  Inpname,OBJPROP_HIDDEN,FALSE); 
   ObjectSetInteger(0,  Inpname,OBJPROP_ZORDER,1);    
   ObjectSetInteger(0,  Inpname,OBJPROP_BGCOLOR,BackColor);
   ObjectSetInteger(0,  Inpname,OBJPROP_ALIGN,ALIGN_LEFT);
   ObjectSetInteger(0,  Inpname,OBJPROP_BORDER_COLOR,borderColor);
   ObjectSetInteger(0,  Inpname,OBJPROP_COLOR,TextColor);  
   ObjectSetString(0,   Inpname,OBJPROP_FONT,"TAHOMA"); 
   ObjectSetString(0,   Inpname,OBJPROP_TEXT,text);
}
يهمنا هنا مايخص الموضوع وهو تركيب الألوان:
رد مع اقتباس


موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
2#
10 - 08 - 2019, 01:38 PM
تووووووت غير متواجد حالياً  
رد مع اقتباس
موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
3#
10 - 08 - 2019, 01:44 PM
اقتباس:
يهمنا هنا مايخص الموضوع وهو تركيب الألوان:
الصور المرفقة
نوع الملف: png 2.png‏ (32.2 كيلوبايت, المشاهدات 38)
تووووووت غير متواجد حالياً  
رد مع اقتباس
موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
4#
10 - 08 - 2019, 01:47 PM
تدريج أي من الأولن الثلاثة نعلم انها يبدأ من 0 و حتى 255 -- لذا في الدالة العشوائية للون--باقي القسمة على 256 في البرنامج
افتح مربع الألوان في المنصة لاي معطى: ستجد ان القيمة بين 0 و 255

الصور المرفقة
نوع الملف: png 2.png‏ (34.1 كيلوبايت, المشاهدات 38)
تووووووت غير متواجد حالياً  
رد مع اقتباس
موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
5#
10 - 08 - 2019, 01:47 PM
انتهى
================
تووووووت غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية abo_samar
عضو فـعّـال
الصورة الرمزية abo_samar
 
تاريخ التسجيل: Jun 2012
الدولة: مصر
المشاركات: 1,545
خبرة السوق: 5 الى 10 سنوات
معدل تقييم المستوى: 9
abo_samar is on a distinguished road
افتراضي رد: تركيب الألوان من string الى color
6#
10 - 08 - 2019, 09:56 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة تووووووت مشاهدة المشاركة
بسم الله الرحمن الرحيم
بعد جهد جهيد شهورا طويلة! وصلت للتالي:
ركب نص string فيه قيمة خانة اللون --خانة الأحمر وخانة الأخضر وخانة الأزرق
اجمعهم مع بعض كنص مع إضافة حرف C المعبر عن قيم الألوان
وأخيرا حولهم من نص الى لون,
وتكمن أهميتها في القدرة على تدريج الألوان برمجياً:
مثال أسفل: نريد كتابة "MOHAMMED SAFAR ALOTAIBI WECOMES ALL " ونريدها على شكل دالة موجية دائرية ونريد الألوان تتغير عشوائياً مع كل ثانية,
المشكلة فقط في كيفية تغيير الأولوان في كل مرة "ثانية" وهذا الموضوع يحلها,

يهمنا هنا مايخص الموضوع وهو تركيب الألوان:
مجهود تشكر عليه
مشاركه تعليميه قيمه جدا
واتمنى ان يستفيد منها كل مهتم بالبرمجه

انا شخصيا استخدم مصفوفه لترتيب الالوان وفقا لنسب محدده
مثال لمؤشر لحساب قوة كل زوج
مع ترتيب القيم بشكل تنازلي حسب القيم

abo_samar غير متواجد حالياً  
رد مع اقتباس
موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
7#
10 - 08 - 2019, 11:35 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة abo_samar مشاهدة المشاركة
مجهود تشكر عليه
مشاركه تعليميه قيمه جدا
واتمنى ان يستفيد منها كل مهتم بالبرمجه

انا شخصيا استخدم مصفوفه لترتيب الالوان وفقا لنسب محدده
مثال لمؤشر لحساب قوة كل زوج
مع ترتيب القيم بشكل تنازلي حسب القيم

المصفوفات حتما اسهل الطرق ولكن فيها تعبئة بيانات داخل البرنامج
صورتك مدرج الوان وهذا الموضوع يساعدك أكثر--تركيب النص ثم الزيادة على القيم برمجيا

الموضوع هنا يعطيك قدرة افضل للتحكم في الألوان لو اردت تغييرها بدلا من العودة للمصفوفة وتعبئة القيم مرة اخرى
تووووووت غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية abo_samar
عضو فـعّـال
الصورة الرمزية abo_samar
 
تاريخ التسجيل: Jun 2012
الدولة: مصر
المشاركات: 1,545
خبرة السوق: 5 الى 10 سنوات
معدل تقييم المستوى: 9
abo_samar is on a distinguished road
افتراضي رد: تركيب الألوان من string الى color
8#
11 - 08 - 2019, 02:48 AM
اقتباس:
المشاركة الأصلية كتبت بواسطة تووووووت مشاهدة المشاركة
المصفوفات حتما اسهل الطرق ولكن فيها تعبئة بيانات داخل البرنامج
صورتك مدرج الوان وهذا الموضوع يساعدك أكثر--تركيب النص ثم الزيادة على القيم برمجيا

الموضوع هنا يعطيك قدرة افضل للتحكم في الألوان لو اردت تغييرها بدلا من العودة للمصفوفة وتعبئة القيم مرة اخرى
ليست ادراج وتعبئه يدوى للمصفوفه
بل معادلات مثلما وضعت فى شرحك
ودور المصفوفه تجميع البيانات وترتيبها
abo_samar غير متواجد حالياً  
رد مع اقتباس
موقوف
 
تاريخ التسجيل: Jun 2019
المشاركات: 1,362
معدل تقييم المستوى: 0
تووووووت is an unknown quantity at this point
افتراضي رد: تركيب الألوان من string الى color
9#
11 - 08 - 2019, 03:46 AM
اقتباس:
المشاركة الأصلية كتبت بواسطة abo_samar مشاهدة المشاركة
ليست ادراج وتعبئه يدوى للمصفوفه
بل معادلات مثلما وضعت فى شرحك
ودور المصفوفه تجميع البيانات وترتيبها
ممكن الكود؟
تووووووت غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية abo_samar
عضو فـعّـال
الصورة الرمزية abo_samar
 
تاريخ التسجيل: Jun 2012
الدولة: مصر
المشاركات: 1,545
خبرة السوق: 5 الى 10 سنوات
معدل تقييم المستوى: 9
abo_samar is on a distinguished road
افتراضي رد: تركيب الألوان من string الى color
10#
11 - 08 - 2019, 09:23 AM
اقتباس:
المشاركة الأصلية كتبت بواسطة تووووووت مشاهدة المشاركة
ممكن الكود؟
كود:
//--- locals
   double scaleMax,scaleMin,scaleEdge;
//---
   int    arrayMax,arrayMin;
int j,xoffset;

//--- Color 1 parameters
   int r_1 = 0;
   int g_1 = 255;
   int b_1 = 0;

//--- Color 2 parameters
   int r_2 = 255;
   int g_2 = 255;
   int b_2 = 255;

//--- Color 3 parameters
   int r_3 = 255;
   int g_3 = 0;
   int b_3 = 0;

   int midValue=(symbolsTotal%2==0 ? symbolsTotal/2 :(symbolsTotal-1)/2)-1;
//--- Build an array of colors and calculate percentage price's change
   for(int i=0;i<symbolsTotal;i++)
     {
      //--- Local variables
      int r_value = r_2;
      int g_value = g_2;
      int b_value = b_2;

      //--- Calculates the percent change of each symbol
      if(CopyRates(marketWatchSymbolsList[i],periodsel,0,2,DailyBar)==2)
        {
         percentChange[i]=((DailyBar[0].close/DailyBar[1].close)-1)*100;

         if(i<=midValue) // Positive values
           {
            //--- Positive interpolation function
            r_value = r_1-i*(r_1-r_2)/midValue;
            g_value = g_1-i*(g_1-g_2)/midValue;
            b_value = b_1-i*(b_1-b_2)/midValue;
           }
         else
           {
            //--- Negative interpolation function
            r_value = r_2-(i-midValue-1)*(r_2-r_3)/midValue;
            g_value = g_2-(i-midValue-1)*(g_2-g_3)/midValue;
            b_value = b_2-(i-midValue-1)*(b_2-b_3)/midValue;
           }
        }
      //--- Sets all possible colors to the array colorArray[]
      string rgbColor=IntegerToString(r_value)+","+IntegerToString(g_value)+","+IntegerToString(b_value);
      colorArray[i]=StringToColor(rgbColor);
     }

//--- Determine maximum/minimum and the scale value
   arrayMax=ArrayMaximum(percentChange); arrayMin=ArrayMinimum(percentChange);
   if(arrayMax==-1 || arrayMin==-1) return;

//--- Determine the scale
   scaleEdge=MathMax(MathAbs(percentChange[arrayMax]),MathAbs(percentChange[arrayMin]));
//---
   scaleMax=scaleEdge; scaleMin=-scaleEdge;
   
   midValue=(symbolsTotal%2==0 ? symbolsTotal/2 :(symbolsTotal-1)/2);
//--- Sets colors to the heatmap
   for(int i=0;i<symbolsTotal;i++)
     {
      //--- Local variable
      int heatmapColor=0;

      //--- Sets the color position (gradientColor) inside the colorArray
      if(percentChange[i]>0)
        {
         //--- color index between 0 and (symbolsTotal/2)-1
         heatmapColor=(int)MathFloor((1-percentChange[i]/scaleMax)*midValue);
        }
      else if(percentChange[i]<0)
        {
         //--- color index between symbolsTotal/2 and symbolsTotal-1
         heatmapColor=(int)MathCeil((percentChange[i]/scaleMin)*midValue)+midValue-1;
        }
      else
        {
         heatmapColor=midValue; // Mid position
        }

      if(heatmapColor<0) Print("Array out of range, heatmapcolor=",heatmapColor);
      if(heatmapColor>=ArraySize(colorArray)) Print("Array out of range, heatmapcolor=",heatmapColor," colorArray size=",ArraySize(colorArray));

      displaylist[i][0] = percentChange[i];
      displaylist[i][1] = heatmapColor;
      displaylist[i][2] = i;

   }

   if (sort == true) {
      if (sortmode == 0)
      ArraySort(displaylist,WHOLE_ARRAY,0,MODE_ASCEND);
      else
      ArraySort(displaylist,WHOLE_ARRAY,0,MODE_DESCEND);
   }
يمكنك توظيفه لاى نتائج
تووووووت likes this.
abo_samar غير متواجد حالياً  
رد مع اقتباس


إضافة رد

أدوات الموضوع


جديد مواضيع منتدى المؤشرات و الاكسبرتات


09:31 AM