Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/104: Рейтинг темы: голосов - 104, средняя оценка - 4.66
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685

Скриншот выделенного участка экрана

18.01.2011, 17:36. Показов 20675. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В вин7 есть утилитка, позволяющая "вырезать" часть текущего экрана, хочу реализовать нечто подобное, есть у меня загрузчик изображений на сайт одно хостинка картинок, вот хочу добавить туда такую функцию.
Суть в том, что после активации функции пользователь имеет возможность выделеть нужную часть экрана (возможно, что область будет захватывать несколько окон), после чего программа представляет эту выделенную область как картинку одного из поддерживаемых форматов и загрузи на сайт стандартной функцией загрузки.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2011, 17:36
Ответы с готовыми решениями:

Получить скриншот экрана из игры
Добрый день. Подскажите, пожалуйста, как можно получить скриншот экрана, если запущена игра. Screen.GetBounds и дальнейшие танцы дают...

Скриншот экрана и и его сохранение в папку
Всем привет. Имеется форма, на ней кнопка. Как сделать так, что бы при нажатии кнопки, сделать сриншот полного рабочего стола, и...

Скриншот не всего экрана, а только изменившейся области
В общем задача такая. Вишу программу для удаленного управления. Для оптимизации решил отправлять не целые скриншоты а только области на...

7
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
18.01.2011, 18:35
Отлично, хорошая идея. Поделились, так сказать, планами.
А вопрос то в чем? Написать и выложить вам полный код?
SSTREGG в соседнем топике выложил следующий код:
C#
1
2
3
4
5
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp)) {
g.CopyFromScreen(0, 0, 0, 0, new Size(pictureBox1.Width, pictureBox1.Height));
}
pictureBox1.Image = bmp;
Общую суть процесса он вполне описывает.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
18.01.2011, 19:06  [ТС]
Не понятно как сделать так, чтобы допустим, как это сделано в "Ножницах" Win7, весь экран немного сменил цвет и из него можно было "вырезать" нужную часть. Как я понял сей код, он вырезает картинку размерами пикчербокса с координат 0;0, 0;0, мне же интересно, как получить эти координаты и размеры того, что вырежет пользователь и вообще как дать возможность пользователю вырезать.
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
18.01.2011, 19:12
Лучший ответ Сообщение было отмечено как решение

Решение

r0fL, только что попробовал сделать так (спортивного интереса ради):
Создаем форму, кидаем на нее picturebox, задаем форме прозрачность процентов 50-70. Затем ставим в обработчик клика по picturebox:
C#
1
2
3
4
5
6
7
8
9
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, new Size(pictureBox1.Width, pictureBox1.Height));
            }
            pictureBox1.Image = bmp;
        }
В таком случае вполне все работает, только вот рамка тоже скринится, так как координаты берутся формы, а не picturebox. Можно банально вычесть рамку
Если наводить красоту, то можно методом, который я описал по ссылке выше (из книги Климова), сделать picturebox полностью прозрачным:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public Form1()
        {
            InitializeComponent();
            this.pictureBox1.BackColor  = System.Drawing.Color.FromArgb( 
                ((System.Byte)(255)), 
                ((System.Byte)(128)), 
                ((System.Byte)(128)));
            this.TransparencyKey = System.Drawing.Color.FromArgb( 
                ((System.Byte)(255)), 
                ((System.Byte)(128)), 
                ((System.Byte)(128))); 
        }
Сохранение сделать элементарно.
3
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
18.01.2011, 20:14  [ТС]
Да, наверно так и сделаю: создам форму, которая будет полупрозрачна, по клику будет создаваться новый пикчербокс и пока тянется мышка - будут устанавливаться его размеры, после того как кнопка отпускается, сохраняется изображение, которое осталось в пикчербоксе, ну а потом уже его и загружаю.
Метод сохранит то, что находится под пикчербоксом, в случае его прозрачности, я правильно понял?

Добавлено через 25 минут
Еще вопрос, как сделать так, чтобы при прозрачности формы 50% на месте PictureBox`a прозрачность была 100%?
0
179 / 175 / 14
Регистрация: 17.01.2011
Сообщений: 349
18.01.2011, 20:15
r0fL,
да, примерно так. Возможно, конечно, есть более эстетичные решения. То, что выдал мой мозг после рабочего дня - в приложении. VS2010 под FW4.0, но компилируется и на более низких. Оставлю у себя в наработках - вдруг пригодится?

Кратко поясню: выделяешь рамкой нужный участок и кликаешь, картинка сохраняется. Если передвинуть форму - сбрасывается.
Вложения
Тип файла: zip CutPartScreen.zip (27.3 Кб, 415 просмотров)
1
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
18.01.2011, 20:24  [ТС]
Slap, да, но такой вариант несколько не подходит, я делаю так, разворачиваю форму на весь экран, делаю её полупрозрачной, затем, когда кликаю по ней - появляется пикчербокс, который растягиваю, это то, что нужно соскринить, но вот вопрос, как сделать так, чтобы форма на месте этого пикчербокса была полностью прозрачна, а в остальных местах так же, на 50%?
0
Местный Ёжидзе
 Аватар для hitmen047
42 / 44 / 4
Регистрация: 03.03.2010
Сообщений: 225
19.01.2011, 00:22
Цитата Сообщение от r0fL Посмотреть сообщение
но вот вопрос, как сделать так, чтобы форма на месте этого пикчербокса была полностью прозрачна, а в остальных местах так же, на 50%?
Как уже писал Slap:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.pictureBox1.BackColor  = System.Drawing.Color.FromArgb( 
                ((System.Byte)(255)), 
                ((System.Byte)(128)), 
                ((System.Byte)(128)));
            this.TransparencyKey = System.Drawing.Color.FromArgb( 
                ((System.Byte)(255)), 
                ((System.Byte)(128)), 
                ((System.Byte)(128))); 
        }
...
А что бы задать прозрачность самой формы, используй свойство Opacity.
Так же можешь изменить параметры цветовой палитры используя:

C#
1
2
3
4
this.BackColor = System.Drawing.Color.FromArgb( 
                ((System.Byte)(255)), 
                ((System.Byte)(128)), // Поиграй со значениями
                ((System.Byte)(128))); // Поиграй со значениями
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2011, 00:22
Помогаю со студенческими работами здесь

Скриншот экрана и неугодные белые точки на нем
Создаю программу, которая делает скриншоты и постит их на рабочий стол: Пишу Size screen = Screen.PrimaryScreen.Bounds.Size; ...

Сделать скриншот экрана, его часть с образцом и определить соответствие в процентах
Нужно сделать скриншот экрана, после чего сравнить его или его часть с образцом и определить соответствие в процентах. Как осуществить?

Как сделать скриншот экрана?
Как сделать скриншот экрана (допустим, 200 на 300px, по координатам x: 150, y: 20) и поместить его в image?

[WPF] Скриншот выделенной области экрана
Подскажите, пожалуйста, как правильно проделать следующие действия: пользователь нажимает кнопку "Сфотографировать", затем...

Как узнать стиль выделенного участка текста, загруженного из Word'a ?
Здравствуйте! Подскажите как можно узнать стиль (жирный, курсив или подчеркнутый) выделенного участка текста методом Selection. В...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru