Câu hỏi hay nhưng tôi nghĩ điều này là không thể. Nếu có một số lớp phủ bên trong ControlTemplate bạn không thể xây dựng một hàm tính toán một màu tối hơn mà sau đó sẽ kết thúc như màu dự định.
ví dụ: khi bạn nhập màu đỏ là: 255,0,0
bạn nhận được 255,153,153
, bây giờ chức năng cần được áp dụng cho màu ban đầu của bạn sẽ cần phải làm tối màu đỏ, điều này tất nhiên chỉ có thể được thực hiện trong kênh màu đỏ khi màu xanh lá cây và màu xanh là không . Tuy nhiên, vấn đề không phải là kênh màu đỏ (kết thúc bằng 255 và do đó không bị ảnh hưởng), vì vậy bất kỳ thay đổi nào sẽ chỉ phục vụ cho việc khử màu thậm chí nhiều hơn thay vì làm tối màu.
Edit: Để làm điều này mathmatical hơn một chút, các chức năng được áp dụng bởi tính minh bạch của sự lựa chọn là:
f (x) = 0.4x + 153
Nếu bạn áp dụng điều này cho tất cả các kênh màu của bạn, bạn sẽ thấy rằng đây thực sự là trường hợp. Bây giờ làm thế nào để chúng ta có được những giá trị chúng ta muốn? Khá đơn giản, chúng ta đảo ngược chức năng, đó là:
e^(- 1) (x) = -2.5 (153,0 - x)
Tuyệt vời! Bây giờ cho phép áp dụng được cho màu sắc của bạn:
R: -130,0
G: 0
B: 140
Hmm, không tuyệt vời như vậy sau tất cả tôi giả sử.
Giá trị âm này chính xác là lý do tại sao điều này không phải lúc nào cũng có thể, mọi màu có thành phần bên dưới 153
không thể đảo ngược.
Nguồn
2011-08-11 16:37:01
Bạn có thể cho đoạn code bạn sử dụng để thiết lập các màu sắc? – Jakub
Tôi nghi ngờ rằng màu của bạn đang được bán trong suốt, và bạn cần làm cho nó mờ đục. Nếu không nhìn thấy cách bạn thay đổi màu sắc, tôi không có một cách dễ dàng để đề xuất nhiều hơn thế. –
Không giúp ích nếu bạn đang cố gắng làm một phong cách tùy biến cao, nhưng tôi có xu hướng muốn để lại màu mặc định của hệ thống và khi tạo điều khiển tùy chỉnh, hãy mượn màu mặc định của hệ thống từ các ngữ cảnh tương tự. Điều này rất hữu ích cho khả năng tương thích với các chế độ trợ năng của Window, và làm cho nó để người dùng có thể sử dụng khả năng chủ đề của cửa sổ mà không gây ra xung đột thị giác khó chịu. –