Книга: Программирование КПК и смартфонов на .NET Compact Framework
Копирование рисунка
Копирование рисунка
Библиотека .NET Compact Framework 1.0 не поддерживает метод System.Drawing.Image.Clone
, позволяющий создать точную копию картинки. Это ограничение легко обходится с помощью создания собственных методов. Кроме того, можно расширить возможности метода и добавить функциональность, позволяющую копировать часть картинки. Соответствующий код приведен в листинге 6.17.
Листинг 6.17
// Копируем всю картинку
protected Bitmap CopyBitmap(Bitmap source) {
return new Bitmap(source);
}
// Копируем часть картинки
protected Bitmap CopyBitmap(Bitmap source, Rectangle part) {
Bitmap bmp = new Bitmap(part.Width, part.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, 0, 0, part, GraphicsUnit.Pixel);
g.Dispose();
return bmp;
}
private void button1_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
Bitmap myBMP = new Bitmap(@"windowsbanner.gif");
// Половина ширины картинки
int left = myBMP.Size.Width / 2;
// Копируем всю картинку Bitmap
clone = CopyBitmap(myBMP);
// копируем левую часть картинки
Bitmap part =
CopyBitmap(myBMP, new Rectangle(0, 0, left, myBMP.Size.Height));
// Выводим три картинки по вертикали:
// источник, копию и копию левой части
int y = 10;
// картинка-источник
g.DrawImage(myBMP, 10, y);
y += myBMP.Height + 10;
// картинка-копия
g.DrawImage(clone, 10, y);
y += clone.Height + 10;
// копия левой части картинки
g.DrawImage(part, 10, y);
y += part.Height + 10;
g.Dispose();
}
private void button2_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
Bitmap myBMP = new Bitmap(@"windowsbanner.gif");
g.Clear(Color.White);
int left = myBMP.Size.Width / 2; // Копия картинки
Bitmap clone = (Bitmap)myBMP.Clone();
int y = 10;
g.DrawImage(myBMP, 10, y);
y += myBMP.Height + 10;
g.DrawImage(clone, 10, y);
y += clone.Height + 10;
g.Dispose();
}
В этом примере создаются две перегруженные версии метода CopyImage
. При помощи этого метода можно копировать картинку или ее часть. Для сравнения в примере было показано, как можно скопировать картинку с помощью метода Clone
, доступного в .NET Compact Framework 2.0. Результат работы соответствующего приложения показан на рис. 6.4.
Рис. 6.4. Копирование картинки разными способами
- Классы для программирования графики
- Класс Pen
- Класс Brush
- Класс SolidBrush
- Класс TextureBrush
- Класс Color
- Класс Font
- Класс Icon
- Класс Bitmap
- Структура Point
- Структура Rectangle
- Графические методы
- Создание собственных методов DrawPie и FillPie
- Создание фонового рисунка для формы
- Копирование рисунка
- Поддержка прозрачности
- Округленные прямоугольники
- Создание экранных снимков
- Метод Lockbits
- Графический редактор
- Дополнительные материалы
- Копирование и вставка
- Резервное копирование базы данных InterBase
- Резервное копирование многофайловых баз данных
- Резервное копирование при работе InterBase в режиме 24x7
- 8.2.8. Копирование хэша в массив
- Резервное копирование
- Работа с рисунками
- Глава 13 Резервное копирование и восстановление
- 13.5.1. Копирование
- Копирование и перемещение фрагментов текста
- Работа с фрагментами рисунка
- Выбор фонового рисунка