تجد معظم للقراءة لون النص التي يتم رسمها على سطح ملون

StackOverflow https://stackoverflow.com/questions/646068

سؤال

أنا غير متأكد من كيفية طرح هذا ولكن هنا يذهب.

لقد رسم شغل الملونة مستطيل على الشاشة.اللون هو في شكل R,G,B

ثم أريد أن ألفت نص على رأس مستطيل ، ومع ذلك لون النص يجب أن يكون من النوع الذي يوفر أفضل المقابل ، بمعنى أنه قابل للقراءة.

على سبيل المثال:

إذا كنت رسم مستطيل أسود, واضح لون النص أن تكون بيضاء.

ما حاولت الآن هو هذا.لا تمر هذه الوظيفة لون المستطيل يعود مقلوب لون ثم استخدام النص.

يعمل لكنها ليست أفضل طريقة.

أي اقتراحات ؟

// eg. usage: Color textColor = GetInverseLuminance(rectColor);
private Color GetInverseLuminance(Color color)
{
    int greyscale = (int)(255 - ((color.R * 0.30f) + (color.G * 0.59f) + (color.B * 0.11f)));

    return Color.FromArgb(greyscale, greyscale, greyscale);
}
هل كانت مفيدة؟

المحلول

واحد النهج بسيط هو أن يضمن أن تعطي بشكل ملحوظ لون مختلف هو تبديل أعلى قليلا من كل مكون من الثلاثي RGB.

Color inverse(Color c)
{
    return new Color(c.R ^ 0x80, c.G ^ 0x80, c.B ^ 0x80);
}

إذا كان اللون الأصلي كان #1AF283 ، "معكوس" سيكون #9A7203.

على النقيض سوف تكون كبيرة.أنا لا ضمانات حول الجماليات.

تحديث 2009/4/3: أنا جربت مع هذا وغيرها من المخططات.النتائج في بلدي بلوق.

نصائح أخرى

واللون الأكثر قراءة ستكون إما أبيض أو أسود. أكثر "مهدئا" سوف يكون لون ما هو ليس أبيض ولا أسود، وسوف يكون اللون الذي يتناقض طفيفة لون الخلفية الخاصة بك. ليس هناك طريقة للقيام بذلك برمجيا لأنه شخصي. لن تجد اللون الأكثر قراءة للجميع لأن الجميع يرى الأمور بشكل مختلف.

بعض النصائح حول اللون ، لا سيما فيما يتعلق الأمامية والخلفية تجاور مثل مع النص.

العين البشرية هي في الأساس بسيطة العدسة ، وبالتالي يمكن أن بشكل فعال فقط التركيز على لون واحد في وقت واحد.العدسات المستخدمة في معظم الكاميرات الحديثة للتغلب على هذه المشكلة باستخدام العدسات متعددة من مختلف الانكسار الفهارس (لوني العدسات) بحيث كل الألوان هي في التركيز في وقت واحد ، ولكن العين البشرية لا أن المتقدم.

ولهذا السبب ، يجب على المستخدمين فقط إلى التركيز على لون واحد في وقت لقراءة النص.وهذا يعني أن أما المقدمة في اللون أو الخلفية ، ولكن أبدا على حد سواء. هذا يؤدي إلى حالة عادة ما يسمى اهتزاز في العين بسرعة التحولات التركيز بين الألوان الأمامية والخلفية ، في محاولة لحل الشكل ، ولكن ذلك لم يحل ، وشكل ابدأ في التركيز ، وأنه يؤدي إلى إجهاد العين.

وسوف على وظيفة الخاص بك لا تعمل إذا كنت تزويدها RGB (127127127)، لأنه سيعود نفس اللون المحدد. (تعديل الدالة للعودة إما أسود أو أبيض من شأنه أن يحسن قليلا الأشياء)

وأفضل وسيلة لديك دائما أشياء يمكن قراءتها هي أن يكون النص الأبيض مع الأسود من حوله، أو العكس.

ولقد حققت oftenly من قبل أول رسم النص الأسود في (س 1، ص 1)، (س + 1، ص 1)، (س + 1، ص 1)، (س + 1، س + 1 )، ثم نص أبيض على (س، ص).

وبدلا من ذلك، هل يمكن أن أول رسم كتلة سوداء شبه شفافة، ثم غير شفافة نص أبيض على أكثر من ذلك. أن يضمن أنه سيكون هناك دائما قدر معين من التناقض بين الخلفية والنص.

وماذا الرمادي؟ إما أسود أو أبيض سيكون أفضل. أبيض على الألوان الداكنة، أسود على الألوان الفاتحة. انظر فقط إذا الإنارة فوق عتبة واختيار واحد أو الآخر

و(أنت لا تحتاج إلى صافي، C # أو العلامات asp.net، بالمناسبة)

وتحتاج إلى دراسة بعض نظرية اللون. برنامج يسمى "عجلة الألوان برو" هو متعة للعب مع حولها، وسوف تعطيك فكرة عامة.

وأساسا، كنت تبحث عن لون مكمل للون معين.

وقال ذلك، أعتقد أنك سوف تجد أنه في حين تساعد نظرية اللون، لا تزال تحتاج العين البشرية لتهذيب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top