Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95

Внедрить текст в PictureBox и сохранить в файл

10.02.2012, 13:42. Показов 3069. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Пишется программа для видеонаблюдения. Все вроде хорошо, снимается картинка с нескольких камер, передается на сервер. Но хотелось бы дополнить сие произведение . Вот вопросик и возник, надо на картинку с камеры на сервере наложить текст, ну типа дата, время, № камеры и т.д., а потом сохранить это все в файл (AVI). Нарисовать на PictureBox-е можно, но при сохранении в файл, сохраняется только картинка. Хотел через скриншот эрана сделать. Вот и думаю может еще как нибудь можно.
Не подскажите?

Заранее благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2012, 13:42
Ответы с готовыми решениями:

Нарисовать текст в PictureBox и сохранить в файл
Приветь всем! Как нарисовать текст в PictureBox и сахранит в файл

Как создать Word файл и сохранить в него картинку из PictureBox и текст из TextBoxов?
Подскажите как создать Word файл и сохранить в него картинку из Picturebox и текст из textboxов?

Дан файл 4.тхт, содержащий текст. Необходимо удалить из данного текста все пробелы. Сохранить преобразованный текст в файл
Дан файл 4.txt, содержащий текст. Необходимо удалить из данного текста все пробелы. Сохранить преобразованный текст в файл

10
 Аватар для Masia_March
70 / 70 / 12
Регистрация: 09.08.2011
Сообщений: 116
Записей в блоге: 1
10.02.2012, 13:45
Можно, но тут придется иметь дело с WPF, необходимо создать свой контрол.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.02.2012, 14:03
Цитата Сообщение от Masia_March Посмотреть сообщение
Можно, но тут придется иметь дело с WPF, необходимо создать свой контрол.
такое чувство, что до создания wpf задача была нерешаемой

DeGroup, из PictureBox выдергиваешь Image, для которого работаешь с Graphics.DrawString. А дальше Image.Save
2
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95
10.02.2012, 22:47  [ТС]
Вот набросал по быстрому
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public static void SetStringToScreen(short ChannelNum, string Str, short X, short Y)
        {
            Font font = new Font("Microsoft Sans Serif", 16);
            SolidBrush brush = new SolidBrush(Color.Black);
            //Brush brush = Brushes.Black;
            Point point = new Point(X, Y);
            StringFormat stringFormat = new StringFormat();
 
            Graphics graphics = CamImageReceiver[ChannelNum].CreateGraphics();
            //Graphics graphics = Graphics.FromHwnd(CamImageReceiver[ChannelNum].Handle);
            graphics.DrawString(Str, font, brush, point, stringFormat);
        }
потом или так
C#
1
2
3
4
        private void CamPictureBox_Paint(object sender, PaintEventArgs e)
        {
            SetStringToScreen(0, "1234567890", 10, 10);
        }
или в нитке отдельно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        public void Process()
        {
            try
            {
                while (_NetStart)
                {
                    using (MemoryStream MStream = new MemoryStream())
                    {
                        byte[] ReceiveBytes = UPDLister.Receive(ref EPGroup);
                        MStream.Position = 0;
                        MStream.Write(ReceiveBytes, 0, ReceiveBytes.Length);
 
                        MainForm.CamImageReceiver[Num].Image = Image.FromStream(MStream);
                        SetStringToScreen(Num, "1234567890", 10, 10);
                    }
                }
            }
            catch (Exception e)
            {
                return;
            }
 
        }
и во всех случаях выводимая строка моргает. Что делать, репу чешу . Есть мысли?

Заранее благодарен.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.02.2012, 10:39
Цитата Сообщение от DeGroup Посмотреть сообщение
во всех случаях выводимая строка моргает
или упоминания о PictureBox в этом коде нет... или я его не вижу, а ведь изначально вопрос был о добавлении записи в PictureBox
0
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95
11.02.2012, 10:50  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
или упоминания о PictureBox в этом коде нет... или я его не вижу, а ведь изначально вопрос был о добавлении записи в PictureBox
Извините что не пояснил CamImageReceiver[Num] это массив указателей на PictureBox-ы. Объявлено так -
public static PictureBox[] CamImageReceiver = new PictureBox[ChannelCount];
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.02.2012, 11:22
а как поисходит отображение на экране?
0
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95
11.02.2012, 11:52  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
а как поисходит отображение на экране?
Накидал на форму 4 PictureBox-а (динамически надо бы создавать, но это позже), ну а потом вот
тупа заполняю массив CamImageReceiver и пускаю нитку, в ней по UDP получаю изображение от клиента засовываю в один из CamImageReceiver и здесь же рисую текст на нем. Вот....
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
namespace VNServer
{
    public partial class MainForm : Form
    {
        const byte ChannelCount = 4; // Количество каналов (камер)
        
        public static PictureBox[] CamImageReceiver = new PictureBox[ChannelCount];
 
        public MainForm()
        {
            InitializeComponent();
        }
 
        private void MainForm_Load(object sender, EventArgs e)
        {
            ....
            CamImageReceiver[0] = CamPictureBox1;
            CamImageReceiver[1] = CamPictureBox2;
            CamImageReceiver[2] = CamPictureBox3;
            CamImageReceiver[3] = CamPictureBox4;
        }
      ....
   }
//===============================================================
    public class NetProcess
    {
        public byte Num;
 
        public static Graphics graphics;
 
        public Thread NetThread;
        //-------------------------- 
        public NetProcess()
        {
            ....
            graphics = MainForm.CamImageReceiver[Num].CreateGraphics();
 
            _NetStart = true;
            NetThread = new Thread(new ThreadStart(Process));
            NetThread.IsBackground = true; // убить поток после завершения проги
            NetThread.Name = "NetThread_" + Num.ToString();
            NetThread.Start();
        }
        //---------------------------------------
        ~NetProcess()
        {
            ;
        }
        //----------------------------------------
        public void Process()
        {
            try
            {
                while (_NetStart)
                {
                    using (MemoryStream MStream = new MemoryStream())
                    {
                        byte[] ReceiveBytes = UPDLister.Receive(ref EPGroup);
                        MStream.Position = 0;
                        MStream.Write(ReceiveBytes, 0, ReceiveBytes.Length);
 
                        MainForm.CamImageReceiver[Num].Image = Image.FromStream(MStream);
                        SetStringToScreen(Num, "1234567890", 10, 10);
                    }
                }
            }
            catch (Exception e)
            {
                return;
            }
 
        }
        //---------------------------------------
        public static void SetStringToScreen(short ChannelNum, string Str, short X, short Y)
        {
            Font font = new Font("Microsoft Sans Serif", 16);
            SolidBrush brush = new SolidBrush(Color.Black);
            Point point = new Point(X, Y);
            StringFormat stringFormat = new StringFormat();
 
            graphics.DrawString(Str, font, brush, point, stringFormat);
        }
    }// public class NetProcess
}
Хочу попробовать сделать по другому, через клиент.
Кода клиент получает кадр с камеры, нарисовать строку там, а потом уже отправить серверу.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       private void GetCamCapture(object sender, NewFrameEventArgs eventArgs)
        {
            using (MemoryStream MStream = new MemoryStream())
            {
                Bitmap image = (Bitmap)eventArgs.Frame.Clone();
                Image CamCaptureImage = image; // Кадр с камеры
                
  Вот здесь хотел добавить строку на Image
 
                MStream.Position = 0;
                CamCaptureImage.Save(MStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] CaptureImageBuff = MStream.ToArray();
                UDPSocket.SendTo(CaptureImageBuff, PEPoint);
            }
        }
Но как выяснилось не у Image, не у Bitmap нет Graphics , может я туплю . Если есть идеи помогите.
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
11.02.2012, 12:41
Цитата Сообщение от DeGroup Посмотреть сообщение
Но как выяснилось не у Image, не у Bitmap нет Graphics , может я туплю .
Graph = Graphics.FromImage(PicBox.Image/Bmp);
1
7 / 7 / 1
Регистрация: 16.01.2012
Сообщений: 95
11.02.2012, 12:56  [ТС]
Всем спасибо сдвинулся с мертвой точки.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.02.2012, 13:28
DeGroup, а зачем рисовать текст на картинку для отображения? Отображай PictureBox отдельно, текст отдельно в Label, а на картинку текст накладывай перед сохранением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2012, 13:28
Помогаю со студенческими работами здесь

Сохранить изображение с PictureBox в файл
Приветствую! Если:PictureBox.Image = Image.FromFile("D:\Izo\C4.gif") дает нам возможность загружать с диска. А как при необходимости...

Сохранить картинку из PictureBox в файл
Мне нужно сохранить картинку из PictureBox1 в файл. Код: Private Sub SaveAsBut_Click(ByVal sender As System.Object, ByVal e As...

Сохранить изображение из picturebox в файл
Здравствуйте, помогите пожалуйста решить проблему. Я хочу сделать программу следующего содержания: Есть форма, на ней...

Сохранить изображение из PictureBox в файл
Ребят подскажите как сохранить изображение из picturebox файл jpg.

CreateGraphics.Drawstring в PictureBox сохранить в файл
Привет ребят! Подскажите, кто знает как решить проблему... У меня есть в PictureBox'e изображение. С помощью метода...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru