chuyển đổi từ Màu sắc sang bàn chải


110

Làm cách nào để chuyển đổi a Colorthành a Brushtrong C #?

Câu trả lời:


139

Đây là Colorđể Brush...

bạn không thể chuyển đổi nó, bạn phải tạo một bàn chải mới ....

SolidColorBrush brush = new SolidColorBrush( myColor );

bây giờ, nếu bạn cần nó trong XAML, bạn CÓ THỂ tạo một bộ chuyển đổi giá trị tùy chỉnh và sử dụng nó trong một liên kết


8
Để tương thích ngược, tốt hơn nên sử dụng SolidBrush( System.Drawing), có sẵn kể từ .NET Framework 1.1, thay vì SolidColorBrush( System.Windows.Media), có sẵn bắt đầu từ .NET Framework 3.0.
BillyJoe

35
Brush brush = new SolidColorBrush(color);

Cách khác xung quanh:

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

Hoặc điều tương tự.

Điểm không phải tất cả các cọ đều là màu nhưng bạn có thể biến tất cả các màu thành một Brush (SolidColor).


Màu để bàn chải!
cuộc biểu tình

@raiserle: Đối với thông tin của bạn, nội dung câu hỏi đã từng là I want to convert from Brush to Color in c#trong khi tiêu đề thì ngược lại.
HB

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

18

bạn có thể sử dụng cái này:

new SolidBrush(color)

nơi mà màu sắc là một cái gì đó như thế này:

Color.Red

hoặc là

Color.FromArgb(36,97,121))

hoặc là ...


2
Đối với khả năng tương thích ngược, câu trả lời này tốt hơn, vì SolidBrush( System.Drawing) có sẵn kể từ .NET Framework 1.1, trong khi SolidColorBrush( System.Windows.Media) khả dụng bắt đầu từ .NET Framework 3.0.
BillyJoe,

2

Tôi đã gặp vấn đề tương tự trước đây, đây là lớp học của tôi đã giải quyết các chuyển đổi màu sắc Hãy sử dụng nó và tận hưởng:

Đây là cách sử dụng Lớp học của tôi để chuyển đổi nhiều màu

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

Nếu bạn tình cờ làm việc với một ứng dụng có sự kết hợp giữa Windows Forms và WPF, bạn có thể gặp phải rắc rối bổ sung khi cố gắng chuyển đổi System.Drawing.Color thành System.Windows.Media.Color. Tôi không chắc có cách nào dễ dàng hơn để làm điều này hay không, nhưng tôi đã làm theo cách này:

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);
}

Sau đó, bạn có thể sử dụng một trong các kỹ thuật đã đề cập trước đó để chuyển đổi sang Brush.


0

Thường là đủ để sử dụng brush của anh chị em hoặc cha mẹ cho mục đích và điều đó dễ dàng có sẵn trong wpf thông qua việc truy xuất thuộc tính Foreground hoặc Background của họ.

ref: Control.Background

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.