Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обрезать битовую карту 
:(
    Опции темы
EgoBrain
Дата 7.5.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Как обрезать битовую карту Bitmap или Image произвольным образом, например, через Path?
Вообще задача сделать в графическом редакторе инструмент вырезки или копирования в буфер выделенной области. smile 
З.Ы.: Работа с потоком не рассматривается.

Это сообщение отредактировал(а) EgoBrain - 7.5.2008, 09:33
PM MAIL ICQ Skype   Вверх
mr.DUDA
Дата 7.5.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Отрисовать битмап в Graphics созданный из другого Bitmap (с пом. Graphics.FromImage), результат будет в другом битмапе. Обрезку можно сделать через graphics.SetClip, передав туда хоть прямоугольник, хоть GraphicsPath и т.п.


--------------------
user posted image
PM MAIL WWW   Вверх
EgoBrain
Дата 7.5.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Ты не мог бы пример привести, а то я самостоятельно никак немогу разобраться...  smile 
Пусть в твоем примере изображение находится в pictureBox и после вырезки из него/копирования области оно не изменяется.
З.Ы.: Я использовал статический метод Clipboard.SetImage

Это сообщение отредактировал(а) EgoBrain - 7.5.2008, 10:48
PM MAIL ICQ Skype   Вверх
mr.DUDA
Дата 7.5.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Код
using System.Drawing;
using System.Drawing.Drawing2D;

...

        void ОбрезатьКартинку()
        {
            Image srcImg = pictureBox1.Image;
            
            // итоговая картинка будет здесь
            Bitmap dstImg = new Bitmap(srcImg.Width, srcImg.Height);

            using (Graphics gr = Graphics.FromImage(dstImg))
            {
                // вырежем два прямоугольника (внутри ничего отрисовываться не будет)
                gr.SetClip(new Rectangle(10, 10, 20, 20), CombineMode.Exclude);
                gr.SetClip(new Rectangle(50, 40, 100, 40), CombineMode.Exclude);
                
                // отрисовываем исходную картинку с учётом вырезанных областей
                gr.DrawImage(srcImg, Point.Empty);
            }

            // готово. к примеру сохраним итоговую картинку в файл
            dstImg.Save(@"c:\1.bmp");
        }




Добавлено через 1 минуту и 32 секунды
Аналогичным образом, можно сконструировать GraphicsPath и передать его аргументом SetClip (вместо Rectangle).


--------------------
user posted image
PM MAIL WWW   Вверх
Santiago
Дата 25.5.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.5.2008

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как вырезанные области сохранить в файл?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.