Не подскажите, как вывести на экран изображение смасштабированное в большую сторону без сглаживания? То есть каждая точка должна выглядеть как квадратная область с четкими границами. Например, так выглядить масштабированная картинка в Photoshope. Перепробовал различные комбинации Graphics.DrawImage() с Graphics.InterpolationMode, InterpolationMode.SmoothingMode и т.п. — ничего не получилось. Конечно, можно построить такое отмасштабированное изображение путем несложных расчетов — но это требует дополнительных вычислительных ресурсов, чего хотелось бы избежать. thx.
Здравствуйте, kiple, Вы писали:
K>Не подскажите, как вывести на экран изображение смасштабированное в большую сторону без сглаживания? То есть каждая точка должна выглядеть как квадратная область с четкими границами. Например, так выглядить масштабированная картинка в Photoshope. Перепробовал различные комбинации Graphics.DrawImage() с Graphics.InterpolationMode, InterpolationMode.SmoothingMode и т.п. — ничего не получилось. Конечно, можно построить такое отмасштабированное изображение путем несложных расчетов — но это требует дополнительных вычислительных ресурсов, чего хотелось бы избежать. thx.
Ну если я тебя правильно понял, то вот:
// Создаем графику
Graphics g = this.CreateGraphics();
// Масштабируем — почему именно Convert.ToSingle — а фиг знает.
// Если пишешь туда дробные числа (т.е. уменьшаешь масштаб) — компилятор ругается
// что не может конвертнуть "дабл" во "флоат". В данном случае увеличиваем масштаб в 5 раз
g.ScaleTransform(Convert.ToSingle(5),Convert.ToSingle(5));
// Ну а потом — соответственно рисуешь и пишешь то, что хотел
g.DrawImage (ну и там дальше что, я не знаю, этой функцией не пользовался).
Андрей
Всё заканчивается плохо. Если что-то закончилось хорошо — значит оно еще не закончилось.
Здравствуйте, Unforgiver, Вы писали:
U>Ну если я тебя правильно понял, то вот:
Спасибо, но, к сожалению, данный способ так же выводит сглаженное изображение.
Мне надо, что бы, например, черная точка на белом фоне при увеличении изображения в n раз выводилась в виде черного квадрата n*n, а не серым интерполированным пятном.
Здравствуйте, Daima, Вы писали:
D>InterpolationMode.NearestNeighbor — самый низкий по качеству режим сглаживания. Получаеться очень похоже на, что вам нужно.
D>Я могу ошибаться, но ничего другого с использованием DrawImage вы не добьетесь.
Да это действительно то, что мне надо. thx. Только еще необходимо установить Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half, иначе картинка получается сдвинутой на полпикселя.