2014-09-02 1 views
2

Я заметил уродливые проблемы с группировкой при использовании Gradients в WPF и увидел, что решение заключается в том, чтобы установить свойство «бит на пиксель» равным 32. Дело в том, что свойство кажется только Windows Phone, т. е. не работает над программой для настольных устройств, так как попытка добавить this string в ApplicationManifest не показала ничего.Установить бит на пиксель в программе WPF-Desktop

Кто-нибудь знает, могу ли я установить это свойство?

спасибо.

Моей функция, которая рисует градиенты:

public LinearGradientBrush getGradient(Color c1, Color c2, double opacity) 
{ 
    LinearGradientBrush gradient = new LinearGradientBrush(); 
    gradient.StartPoint = new Point(0, 0); 
    gradient.EndPoint = new Point(1, 1); 
    gradient.GradientStops.Add(new GradientStop(c1, 0.0)); 
    gradient.GradientStops.Add(new GradientStop(c2, 1.0)); 
    gradient.Opacity = opacity; 
    return gradient; 
} 

Обращают градиенты от двух доминирующих цветов в качестве обложки альбома. Вы можете увидеть два цвета в верхнем левом углу окна. Я затем вызвать getGradient-функцию с этим:

getGradient(Colors[0], Colors[1], 0.5); // 0.5 is dynamic depending on the brightness of those colors. Tried with 1 opacity but it's still the same. 

Ниже приведены примеры изображений (в формате PNG и закачанный без сжатия)

Как вы можете видеть, происходит переплет. Есть худшие примеры, но я не могу вспомнить, что сделала Обложка.

Обратите внимание, что Image1 не имеет полосы на его альбоме. Хотя на нем есть градиент.

+0

@HighCore Что? бандажирование не вызвано плохой видеокартой, и если да, мои два 770-го должны быть достаточными для рисования градиентов, да? – Tokfrans

+0

@HighCore Извините, но ваши комментарии на самом деле не помогают мне.Мои проблемы реальны, и я хочу знать, как усилить pixelformat для моего приложения WPF. Чтобы получить бандаж - попробуйте нарисовать градиент с действительно подобными цветами. Скорее всего, вы получите тот же результат, что и я. – Tokfrans

+0

Я не эксперт, но я бы подумал, что ваша глубина цвета будет поступать из настроек экрана Windows. Установлено ли это 24 или 32 бит? – vesan

ответ

2

Проведя быстрый поиск, я нашел несколько предложений о том, что проблема может быть просто визуальным эффектом, результатом которого является только 256 значений для каждого из каналов R, G и B, которые определяют цвет и способ работы градиентов , Если вы попытаетесь покрыть большую область градиентом, она разделит ее на более мелкие области, заполненные сплошными цветами, слегка меняющимися между соседними областями. Кроме того, существует оптическая иллюзия, называемая Mach bands, что делает границы областей еще более заметными.

Взгляните на эти ссылки для получения дополнительной информации и некоторых предложенных решений:

+0

Благодарим вас за ваши предложения. Но я думаю, что придумал решение. Проверьте мой ответ – Tokfrans

1

После рыть вокруг долгого времени я наконец нашел лучшее решение:

Добавляем немного шума к изображению! Это означает, что я должен сам рисовать градиент, но я считаю, что качество будет намного лучше.

Я обновлю это сообщение самим алгоритмом и примерами, когда я закончил писать.

Оставайтесь с нами, я думаю.

+0

В первой ссылке, о которой я упоминал в своем ответе, вы можете найти предложение использовать упорядоченное сглаживание и некоторый пример кода, который может быть полезен (это не в принятом ответе, а в другом). –

Смежные вопросы