У меня есть растровое изображение, которое я хочу программно увеличить до ~ 1,5x или 2x до исходного размера. Есть ли простой способ сделать это в .NET CF 2.0?
Как изменить размер растрового изображения в .NET CF 2.0
Ответы (2)
Один из «нормальных» способов - создать новый Bitmap желаемого размера, создать для него Graphics и затем нарисовать на нем старое изображение с помощью Graphics.DrawImage(Point, Rectangle). Доступны ли какие-либо из этих вызовов в Compact Framework?
РЕДАКТИРОВАТЬ: Вот короткое, но полное приложение, которое работает на рабочем столе:
using System;
using System.Drawing;
class Test
{
static void Main()
{
using (Image original = Image.FromFile("original.jpg"))
using (Bitmap bigger = new Bitmap(original.Width * 2,
original.Height * 2,
original.PixelFormat))
using (Graphics g = Graphics.FromImage(bigger))
{
g.DrawImage(original, new Rectangle(Point.Empty, bigger.Size));
bigger.Save("bigger.jpg");
}
}
}
Несмотря на то, что это работает, вполне могут быть лучшие способы сделать это с точки зрения интерполяции и т. Д. Если это работает на Compact Framework, это, по крайней мере, даст вам отправную точку.
person
Jon Skeet
schedule
04.07.2009
Опередите меня, потому что я посмотрел, доступны ли они в Compact Framework =)
- person colithium; 05.07.2009
Я пробовал, но MSDN не совсем ясно понимал этот вопрос ... по крайней мере, оффлайн-версию, которую я использовал.
- person Jon Skeet; 05.07.2009
Интересно, какой InterpolationMode он использует, когда вы просто создаете такой Bitmap и просите его масштабировать. Опять же, MSDN непонятно ...
- person colithium; 05.07.2009
Работает, но требует исправления нескольких ошибок, касающихся совместимости с CF: 1) Свойство Bitmap.PixelFormat не существует 2) Rectangle имеет только конструктор Rectangle (x, y, width, height) 3) g.DrawImage не имеет простого переопределения. Вам нужно вызвать это: g.DrawImage (оригинал, новый прямоугольник (0, 0, больше.Ширина, больше.высота), новый прямоугольник (0, 0, исходная ширина, исходная высота), GraphicsUnit.Pixel);
- person Mr. Lame; 05.07.2009
CF имеет доступ к стандартным объектам Graphics и Bitmap, таким как полная структура.
- Превратить исходное изображение в растровое изображение
- Создайте новый Bitmap желаемого размера
- Свяжите объект Graphics с НОВЫМ растровым изображением
- Вызовите g.DrawImage () со старым изображением и перегрузкой для указать ширину / высоту
- Выбрасывать вещи
Версии: .NET Compact Framework Поддерживается в: 3.5, 2.0, 1.0
person
colithium
schedule
04.07.2009