mengkonversi dari Warna ke kuas

110

Bagaimana cara mengubah a Colorke a Brushdi C #?

kartal
sumber

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

Muad'Dib
sumber
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).

HB
sumber
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) )
TruthOf42
sumber
18

Anda dapat menggunakan ini:

new SolidBrush(color)

dimana warnanya kira-kira seperti ini:

Color.Red

atau

Color.FromArgb(36,97,121))

atau ...

Omid-RH
sumber
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);
        }
    }

}
Amin AmiriDarban
sumber
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.

Jerry Pile
sumber
0

Seringkali cukup menggunakan sikat saudara atau orang tua untuk tujuan tersebut, dan itu mudah tersedia di wpf melalui mengambil properti Latar Depan atau Latar Belakang mereka.

ref: Kontrol. Latar Belakang

Alexey Khoroshikh
sumber