mengkonversi dari Warna ke kuas


110

Bagaimana cara mengubah a Colorke a Brushdi C #?

Jawaban:


139

Ini adalah untuk Coloruntuk Brush....

Anda tidak dapat mengubahnya, Anda harus membuat kuas baru ....

SolidColorBrush brush = new SolidColorBrush( myColor );

sekarang, jika Anda membutuhkannya di XAML, Anda BISA membuat konverter nilai kustom dan menggunakannya dalam pengikatan


8
Untuk kompatibilitas mundur, akan lebih baik menggunakan SolidBrush( System.Drawing), yang tersedia sejak .NET Framework 1.1, daripada SolidColorBrush( System.Windows.Media), tersedia mulai dari .NET Framework 3.0.
BillyJoe

35
Brush brush = new SolidColorBrush(color);

Sebaliknya:

if (brush is SolidColorBrush colorBrush)
    Color color = colorBrush.Color;

Atau semacam itu.

Intinya tidak semua kuas adalah warna tetapi Anda bisa mengubah semua warna menjadi Kuas (Warna Solid).


Warnai dengan Kuas!
raiserle

@raiserle: Sekadar informasi, dulu isi pertanyaannya I want to convert from Brush to Color in c#sedangkan judulnya dibalik .
HB

25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )

18

Anda dapat menggunakan ini:

new SolidBrush(color)

dimana warnanya kira-kira seperti ini:

Color.Red

atau

Color.FromArgb(36,97,121))

atau ...


2
Untuk kompatibilitas mundur, jawaban ini lebih baik, karena SolidBrush( System.Drawing) tersedia sejak .NET Framework 1.1, sementara SolidColorBrush( System.Windows.Media) tersedia mulai dari .NET Framework 3.0.
BillyJoe

2

Saya memiliki masalah yang sama sebelumnya, ini adalah kelas saya yang menyelesaikan konversi warna. Gunakan dan nikmati:

Ini dia, Gunakan Kelas saya untuk Konversi Multi Warna

using System;
using System.Windows.Media;
using SDColor = System.Drawing.Color;
using SWMColor = System.Windows.Media.Color;
using SWMBrush = System.Windows.Media.Brush;

//Developed by امین امیری دربان
namespace APREndUser.CodeAssist
{
    public static class ColorHelper
    {
        public static SWMColor ToSWMColor(SDColor color) => SWMColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SDColor ToSDColor(SWMColor color) => SDColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SWMBrush ToSWMBrush(SDColor color) => (SolidColorBrush)(new BrushConverter().ConvertFrom(ToHexColor(color)));
        public static string ToHexColor(SDColor c) => "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
        public static string ToRGBColor(SDColor c) => "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
        public static Tuple<SDColor, SDColor> GetColorFromRYGGradient(double percentage)
        {
            var red = (percentage > 50 ? 1 - 2 * (percentage - 50) / 100.0 : 1.0) * 255;
            var green = (percentage > 50 ? 1.0 : 2 * percentage / 100.0) * 255;
            var blue = 0.0;
            SDColor result1 = SDColor.FromArgb((int)red, (int)green, (int)blue);
            SDColor result2 = SDColor.FromArgb((int)green, (int)red, (int)blue);
            return new Tuple<SDColor, SDColor>(result1, result2);
        }
    }

}

1

Jika Anda kebetulan bekerja dengan aplikasi yang memiliki campuran Formulir Windows dan WPF, Anda mungkin mengalami kesulitan tambahan saat mencoba mengonversi System.Drawing.Color ke System.Windows.Media.Color. Saya tidak yakin apakah ada cara yang lebih mudah untuk melakukan ini, tetapi saya melakukannya dengan cara ini:

System.Drawing.Color MyColor = System.Drawing.Color.Red;
System.Windows.Media.Color = ConvertColorType(MyColor);

System.Windows.Media.Color ConvertColorType(System.Drawing.Color color)
{
  byte AVal = color.A;
  byte RVal = color.R;
  byte GVal = color.G;
  byte BVal = color.B;

  return System.Media.Color.FromArgb(AVal, RVal, GVal, BVal);
}

Kemudian Anda dapat menggunakan salah satu teknik yang disebutkan sebelumnya untuk mengubahnya menjadi Brush.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.