Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Чтение и запись BMP файла


Автор: tumanovalex 17.12.2006, 00:03
Нужно считать исходный файл BMP, обработать его и записать в новый BMP файл. Подскажите, пожалуйста, как это сделать на C#? Есть ли в C# что-нибудь уже готовое, чтобы не заниматься разбором заголовка файла и прочими трудоемкими делами. 

Автор: mr.DUDA 17.12.2006, 00:47
Смотри класс System.Drawing.Bitmap, для обработки подойдёт либо его же GetPixel/SetPixel (медленно!), либо Graphics созданный через Graphics.FromImage и его методы (DrawLine, FillRectangle, etc.).

Автор: DarkDragon 17.12.2006, 14:36
Цитата(mr.DUDA @  17.12.2006,  00:47 Найти цитируемый пост)
Смотри класс System.Drawing.Bitmap, для обработки подойдёт либо его же GetPixel/SetPixel (медленно!), либо Graphics созданный через Graphics.FromImage и его методы (DrawLine, FillRectangle, etc.). 

Расскажу как это делается:

Работаем с Bitmap:
Код

    Bitmap bmp = New Bitmap ("C:\mybmp.bmp");
    Color clr = bmp.GetPixel (0,0);
    bmp.SetPixel (0,0,Color.Blue);
    bmp.SetPixel (0,1,Color.FromArgb (12,45,222));
    bmp.Save ("C:\mybmp.bmp"); 


Работаем с Bitmap & Graphics:
Код

   Bitmap bmp = New Bitmap ("C:\mybmp.bmp");
   Graphics g = Graphics.FromImage (bmp);
   g.DrawLine (Pens.Blue,0,0,bmp.Width - 1, bmp.Height - 1);
   bmp.Save ("C:\mybmp.bmp");


не забудь использовать пространственное имя:
Код

using System.Drawing;


Да еще можно работать напрямую с данными Bitmap'a, по средством высокоуровневого указателя, и неуправляемой памятью.
Делается это через:
IntPtr (высокоуровневый указатель)
BitmapData (класс для получения указателя на граф. данные в неуправляемой памети [System.Drawing.Imaging])

Автор: tumanovalex 17.12.2006, 18:45
Спасибо огромное, попробую, это как раз то, что мне надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)