Фантомные границы ('вызов') при изменении размеров в GDI +

У нас была та же проблема. Но это не было грандиозное предприятие для нас, потому что мы должны были решить другое больше главных проблем с, в спящем режиме Запрос и Сессия.

Конкретно:

  1. управление, когда транзакция могла фиксироваться. (мы хотели рассчитать, сколько раз был "запущен" tx, и только фиксируйте, когда tx был "закончен" то же количество раз, это было запущено. Полезный для кода, который не знает, должен ли он начать транзакцию. Теперь любой код, для которого нужен tx только, "запускает" один и заканчивает его при выполнении.)
  2. сбор Метрик производительности.
  3. Задержка, начинающая транзакцию, пока не будет известно, что что-то будет на самом деле сделано.
  4. более нежное поведение для query.uniqueResult ()

Так для нас, мы имеем:

  1. Создают интерфейс (AmplafiQuery), который расширяется, Запрос
  2. Создают класс (AmplafiQueryImpl), который расширяет AmplafiQuery и переносит org.hibernate. Запрос
  3. Создает Txmanager, который возвращает Tx.
  4. Tx имеет различный createQuery AmplafiQueryImpl

методов и возвратов И наконец,

, AmplafiQuery имеет "asList ()", который является универсальной включенной версией Query.list (), AmplafiQuery имеет "уникальный ()", который является универсальной включенной версией Query.uniqueResult () (и просто регистрирует проблему вместо того, чтобы выдать исключение)

, Это - большая работа для того, чтобы просто избежать @SuppressWarnings. Однако как я сказал (и перечислил) существует многое из другого лучше! причины сделать переносящуюся работу.

18
задан mckamey 11 December 2009 в 13:41
поделиться

2 ответа

Наконец-то я нашел статью, в которой говорится об этом.

Libor Tinka небрежно упоминает об этом, прежде чем показать свой обширный набор фильтров, которые превосходят масштабирование GDI +:

Судя по его совету, похоже, что он делает именно то, что мы и подозревали: он извлекает усредненные детали из окружающих пикселей за пределы изображения. Мне это кажется недостатком в алгоритме, но он открыт для обсуждения. Чтобы решить эту проблему, существует класс ImageAttributes, в котором вы можете указать, что пиксели за пределами являются просто зеркальным отображением пикселей внутри. Установка этого, кажется, полностью устраняет звон:

using (ImageAttributes wrapMode = new ImageAttributes())
{
    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
    g.DrawImage(input, rect, 0, 0, input.Width, input.Height, GraphicsUnit.Pixel, wrapMode);
}

Огромное спасибо Либору Тинке за решение и Марку Рэнсому за то, что помог мне обдумать это и за то, что дал мне термин "

40
ответ дан 21 October 2019 в 05:29
поделиться

Попробуйте:

g.CompositingMode = CompositingMode.SourceCopy;

Из моего ответа здесь , исправлен синтаксис.

Изменение размера создает частичную прозрачность вокруг границы . Параметр SourceCopy указывает ему заменить этот частично прозрачный пиксель полностью непрозрачным.

3
ответ дан 21 October 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: