Книга: Программирование КПК и смартфонов на .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. Копирование картинки разными способами

Оглавление книги


Генерация: 1.158. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз