Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/46: Рейтинг темы: голосов - 46, средняя оценка - 4.70
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1

Редактирование изображения.

22.09.2009, 21:55. Показов 8766. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Пишу программку, от нее требуется:
1) Выбирается изображение которое загружается на форму в pictureBox.
2) Затем мышкой обводится та часть изображения, которую нужно вырезать (или копировать)
и сохраняется в файл (к примеру 1.jpg)

Как реализовать первую часть я знаю,
выделять кусок изображения я как понимаю событиями MouseDown и Mouse Up

Подскажите пжл, как скопировать этот кусок изображения и сохранить в файл?
От чего отталкиваться при изучении этого вопроса?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2009, 21:55
Ответы с готовыми решениями:

Редактирование изображения
Здравствуйте. Я пока полный 0 в программировании. Помогите пожалуйста создать код программы. В программе необходимо открыть чёрно-белое...

Наложение изображения поверх другого изображения
Дорогие форумчане!Подскажите пожалуйста, как реализовать следующую задачу: необходимо наложить одно изображение поверх другого...

Редактирование метаданных изображения
Добрый день коллеги программеры. Уже неделю бьюсь с не самой сложной, как мне поначалу казалось, проблемой. Чтение метаданных файла...

21
37 / 32 / 4
Регистрация: 23.01.2009
Сообщений: 141
23.09.2009, 01:10
1.Тебе найти прямоугольную область которую ты выделил мышкой в СО относительно самой пикчи. Сделать это можно по разному. Сразу сходу самый простой способ:
.При активации события mousedown на picturebox. Берёшь координату (см. MouseEventArgs.X и MouseEventArgs.Y)Затем отнимаешь от этой точки координату верхнего левого угла picturebox и получаешь точку относительно картинки. Также находишь конечную точку на событии mouseup.
2.Вырезать область можно с помощью класса Graphics.
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
23.09.2009, 18:38  [ТС]
Спасибо, программу написал и во всём разобрался Кому интересно могу выложить код.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
24.09.2009, 04:21
Цитата Сообщение от EatingPeopleIsFun Посмотреть сообщение
Спасибо, программу написал и во всём разобрался Кому интересно могу выложить код.
Обязательно!
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.09.2009, 14:01  [ТС]
события помещающие координаты курсора в
C#
1
Rectangle copySection = new Rectangle();
в момент клика и отпускания кнопки мыши:
C#
1
2
3
4
5
6
7
8
9
10
11
12
 
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            copySection.X = e.X;
            copySection.Y = e.Y;
        }
       
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            copySection.Width = e.X;
            copySection.Height = e.Y;
         }
Создаем обработчик для кнопки btnSave

C#
1
2
3
4
5
6
7
private void btnSave_Click(object sender, EventArgs e)
{
                    string fileName = "1.bmp";
                    Bitmap picture = new Bitmap(fileName);
                    pictureBox1.Image = picture; 
                    savePicture(picture, copySection);
}
И собственно функция сохранения - savePicture

C#
1
2
3
4
5
6
7
8
9
10
       public void savePicture(Bitmap srcBitmap, Rectangle section)
        {
            section.Width -= section.X;
            section.Height -= section.Y;
            Bitmap bmpSave = new Bitmap(section.Width,section.Height);
            Graphics g = Graphics.FromImage(bmpSave);
            g.DrawImage(srcBitmap, 0, 0, section, GraphicsUnit.Pixel);
            bmpSave.Save("1_1.bmp");
            g.Dispose();
        }
вот вроде и всё, самый тривиальный пример
0
10 / 10 / 4
Регистрация: 05.08.2009
Сообщений: 101
24.09.2009, 15:20
А нетривиальный пример выделения прямоугольной области можно подсмотреть здесь: http://support.microsoft.com/kb/314945. С сохранением в файл у коллеги всё Ок.
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
24.09.2009, 15:47
так память очищать

C#
1
2
3
4
5
6
7
8
9
10
11
        public void savePicture(Bitmap srcBitmap, Rectangle section)
        {
            section.Width -= section.X;
            section.Height -= section.Y;
            Bitmap bmpSave = new Bitmap(section.Width,section.Height);
            Graphics g = Graphics.FromImage(bmpSave);
            g.DrawImage(srcBitmap, 0, 0, section, GraphicsUnit.Pixel);
            g.Dispose();            
            bmpSave.Save("1_1.bmp");
            bmpSave.Dispose();
        }
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.09.2009, 17:21  [ТС]
новая цель:
программа запускается и работает в фоновом режиме, при нажатии опр. кнопки ,создается скриншот и сохраняется в bmp формате.

как делать скриншот и сохранять изображение , сворачивать программу в трей разобрался,
нужно при нажатии на клавишу - фоткать. сделал но только при открытой форме, когда сворачиваю в трей - не работает, как реализовать?
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
24.09.2009, 18:12
могу скинуть примерчик (не мой). Там реализован перехват нажатых в системе кнопок.
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.09.2009, 18:13  [ТС]
скинь пжл)
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
24.09.2009, 18:31
вот
Вложения
Тип файла: zip globalhook_src.zip (12.4 Кб, 80 просмотров)
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
24.09.2009, 20:01  [ТС]
мм, я покапался там, куча страшного кода в непонятной библиотеке, и потом вся прога опирается на библиотеку(

подскажите решение попроще? чтобы программа считывала нажатие клавиш в свернутом режиме?
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
24.09.2009, 21:01
ничего там страшного нет.
Добавляете в ваш проект файл UserActivityHook.cs.
Добавляете в код пространство имен - using gma.System.Windows;

Далее в вашем коде используете следующие методы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        
// Объявляется объект actHook из файла UserActivityHook.cs.
UserActivityHook actHook;
 
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Это нужно добавить в ваш метод MainFormLoad
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
void MainFormLoad(object sender, System.EventArgs e)
        {
actHook = new UserActivityHook(); // crate an instance with global hooks
actHook.KeyPress+=new KeyPressEventHandler(MyKeyPress);
        }
    
 
 
// Эта команда запускает перехват клавиатуры (вставьте ее в какую нибудь кнопку или в MainFormLoad)
actHook.Start();
 
// Эта останавливает перехват
actHook.Stop();
 
 
// Этот метоб будет срабатывать при нажатии любой кнопки на клаве
public void MyKeyPress(object sender, KeyPressEventArgs e)
    {
// e.KeyChar - здесь хранится какая клавиша была нажата.
// Если нажата нужная клавиша - выполняйте свое действие
    }
Вот вроде бы и все. Я использовал без проблем этот способ.
1
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
25.09.2009, 00:43  [ТС]
окей, буду использовать эту штуку) просто думал, как по своему сделать можно, спасибо^^
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
25.09.2009, 11:54  [ТС]
При дебаге файл UserActivityHook.cs. выдает ошибку, но программа строится и работает нормально, так и должно быть ?
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
25.09.2009, 17:00
Какую? Если связанную с LoadLocker то это нормально. Просто нужно в настройках студии отключить опцию LoadLocker.
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
26.09.2009, 14:41  [ТС]

Win32Exception не обработано - Операция успешно завершена (так в окошке пишет)

Что это такое?
0
85 / 77 / 13
Регистрация: 03.09.2009
Сообщений: 346
26.09.2009, 15:09
Так а сам перехват кнопок работает? Похоже что неудается запустить перехват. Посмотри как реализовано в родном примере, что я давал. Может быть я что-то упустил, когда писал пост #13...
0
70 / 69 / 10
Регистрация: 14.06.2009
Сообщений: 310
Записей в блоге: 1
26.09.2009, 15:34  [ТС]
да, программа работает нормально, смотрел уже, я бы сделал также. хм=(...
0
semt
26.09.2009, 20:33
привет нужен программер программку надо написать
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2009, 20:33
Помогаю со студенческими работами здесь

Визуальное перелистывание изображения при переходе от одного изображения к другому
Здравствуйте,нужна помощь,как можно в C#,windows form создать приложение которое делает визуальное перелистывание изображения при переходе...

Как добиться качественного рисования изображения поверх изображения picturebox?
есть код: PictureBox p = (PictureBox)sender; p.SizeMode = PictureBoxSizeMode.Normal; ...

Редактирование изображения
Добрый день. Наверное я спрошу глупость, но , можно ли редактировать изображение на стороне клиента? Т.е. открывает страницу сайта для...

Редактирование изображения элемента
Поможите советом, в поиске уже был. Есть схема, в ней есть несколько элементов, которые отрисовываются не так, как надо. Нажимаю...

Редактирование размера изображения
Здравствуйте! Для практики делаю свой графический редактор, все функции работают, но не получается увеличить изображение (Редактор для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru