Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 17.05.2022
Сообщений: 19

Приложение для сборки картинки из других картинок

05.08.2022, 13:10. Показов 522. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Не вовремя нажал создать тему, сейчас редактирую))
Нужно создать приложение для автоматической сборки картинки:
1. Имеется фон в формате PNG или JPG (создан в CorelDRAW);
2. На фон накладываются картинки в определенном порядке

Кликните здесь для просмотра всего текста

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace image
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            button1.Enabled = true;
            button2.Enabled = true;
            comboBox1.Enabled = true;
            comboBox2.Enabled = true;
 
            StreamReader adapter_a = new StreamReader(@"data\first.txt", Encoding.Default);
            string ag_x = adapter_a.ReadToEnd();
            string[] ag_y = ag_x.Split('\n');
            foreach (string ag_s in ag_y)
            {
                comboBox1.Items.Add(ag_s);
            }
 
            StreamReader modules_a = new StreamReader(@"data\second.txt", Encoding.Default);
            string mg_x = modules_a.ReadToEnd();
            string[] mg_y = mg_x.Split('\n');
            foreach (string mg_s in mg_y)
            {
                comboBox2.Items.Add(mg_s);
            }
        }
 
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {            
            listBox1.Items.Clear();
            listBox1.Items.Add("No Device!");
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            button1.Enabled = false;
            button2.Enabled = false;
            StreamReader adapter_b = new StreamReader(@"data\first_b.txt", Encoding.Default);
            string ag_x = adapter_b.ReadToEnd();
            string[] ag_y = ag_x.Split('\n');
            foreach (string ag_s in ag_y)
            {
                comboBox1.Items.Add(ag_s);
            }
 
            StreamReader modules_b = new StreamReader(@"data\second_b.txt", Encoding.Default);
            string mg_x = modules_b.ReadToEnd();
            string[] mg_y = mg_x.Split('\n');
            foreach (string mg_s in mg_y)
            {
                comboBox2.Items.Add(mg_s);
            }
            comboBox1.Enabled = false;
            comboBox2.Enabled = false;
 
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           // comboBox2.Enabled = false;
            listBox1.Items.Add(comboBox1.SelectedItem);
            comboBox1.Enabled = false;
            //comboBox2.Enabled = true;
 
        }
 
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.Items.Add(comboBox2.SelectedItem);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {            
            comboBox1.Enabled = true;
            comboBox2.Enabled = true;
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            listBox1.Items.Clear();
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
        }
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            listBox2.Items.Clear();
            string[] m_array = (from object item in listBox1.Items select item.ToString()).ToArray<string>();
            listBox2.Items.AddRange(m_array);                 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
    }
}


Все, что выше можно не читать.

Нужно создать приложение для автоматической сборки картинки. Поскольку у меня скорей всего будет много вопросов, то буду задавить их тут.
1. Имеется фон в формате PNG или JPG (создан в CorelDRAW);
2. На центр фона, накладываются картинки в формате PNG (нужен прозрачный фон) в определенном порядке.
3. Картинок около 150 шт, но одновременно может быть расположено от 2 до ~30 шт. (конечное количество еще обдумывается, но не больше 30 скорей всего). Картинка должна меняться в зависимости от требуемого количества сегментов.

Итог:
Должна создаться картинка в формате JPG формата А3 и сохранена на рабочем столе.


Всего 4 типа габаритов картинки:
1. Сегмент А - основной, к нему крепится все остальное, он не двигается. - 2 габарита (разная толщина и высота);
2. Остальные сегменты в 2 габаритах, но одинаковой толщины.

От каждого сегмента отходят стрелки (синий цвет) с описанием, хотелось бы что бы оно заполнялось автоматически, в зависимости от выбранного сегмента. При условии, что несколько одинаковых сегментов располагаются подряд, то можно обойтись и одной стрелкой.

Если идея со стрелкой будет сложно реализована, то буду располагать описание на желтых полях.

Как должно работать:
0. Выбирается серия, всего их 2. Но на данный момент будет доступна одна серия, второй еще не существует.
1. Выбирается сегмент А;
2. Выбираются остальные сегменты;
3. Все это дело переходит в listBox1, а затем по нажатию кнопки "Создать картинку" создается картинка.

Что сделано:
0. Выбирается серия. При выборе серии В - все блокируется.
1. Выбирается сегмент А;
1.1 Блокируется comboBox1, т.к. сегмент А может быть только 1.
2. Выбираются остальные сегменты;
3. Все это дело переходит в listBox1, а затем по нажатию кнопки "Создать картинку" создается массив.
Массив отображается, в listBox2, для того, что бы проверить создался ли он.

По нажатию кнопки Очистить (button2) очищается listbox1 и сбрасываются все radioButton
Вопрос:
Подскажите, ориентир, как присвоить картинку каждому элементу массива?
Сейчас можно вводить в listBox1 бесконечное количество строк, но по задумке, максимум должно быть 30. Можно ли это как-то ограничить.

Код прилагаю:
Кликните здесь для просмотра всего текста

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace Crevis_PIO
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            button1.Enabled = true;
            button2.Enabled = true;
            comboBox1.Enabled = true;
            comboBox2.Enabled = true;
 
            StreamReader adapter_a = new StreamReader(@"data\first.txt", Encoding.Default);
            string ag_x = adapter_a.ReadToEnd();
            string[] ag_y = ag_x.Split('\n');
            foreach (string ag_s in ag_y)
            {
                comboBox1.Items.Add(ag_s);
            }
 
            StreamReader modules_a = new StreamReader(@"data\second.txt", Encoding.Default);
            string mg_x = modules_a.ReadToEnd();
            string[] mg_y = mg_x.Split('\n');
            foreach (string mg_s in mg_y)
            {
                comboBox2.Items.Add(mg_s);
            }
        }
 
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {            
            listBox1.Items.Clear();
            listBox1.Items.Add("No Device!");
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            button1.Enabled = false;
            button2.Enabled = false;
            StreamReader adapter_b = new StreamReader(@"data\first_b.txt", Encoding.Default);
            string ag_x = adapter_b.ReadToEnd();
            string[] ag_y = ag_x.Split('\n');
            foreach (string ag_s in ag_y)
            {
                comboBox1.Items.Add(ag_s);
            }
 
            StreamReader modules_b = new StreamReader(@"data\second_b.txt", Encoding.Default);
            string mg_x = modules_b.ReadToEnd();
            string[] mg_y = mg_x.Split('\n');
            foreach (string mg_s in mg_y)
            {
                comboBox2.Items.Add(mg_s);
            }
            comboBox1.Enabled = false;
            comboBox2.Enabled = false;
 
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           // comboBox2.Enabled = false;
            listBox1.Items.Add(comboBox1.SelectedItem);
            comboBox1.Enabled = false;
            //comboBox2.Enabled = true;
 
        }
 
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.Items.Add(comboBox2.SelectedItem);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {            
            comboBox1.Enabled = true;
            comboBox2.Enabled = true;
            radioButton1.Checked = false;
            radioButton2.Checked = false;
            listBox1.Items.Clear();
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
        }
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            listBox2.Items.Clear();
            string[] m_array = (from object item in listBox1.Items select item.ToString()).ToArray<string>();
            listBox2.Items.AddRange(m_array);                 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
    }
}


P.S. Новичок в программировании)

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

Приложение для сборки картинки из других картинок   Приложение для сборки картинки из других картинок   Приложение для сборки картинки из других картинок  

Приложение для сборки картинки из других картинок   Приложение для сборки картинки из других картинок  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2022, 13:10
Ответы с готовыми решениями:

Приложение для скачивания картинок
Добрый день, возможно ли создать такое приложение скачивания картинок из яндекс.картинки и гугл.картинки суть работы: - в проге в...

Приложение для удаления других приложений
У меня есть список установленных приложение, как удалить выбранное приложение? Хочу сделать приложения на подобие Uninstall.

Kotlin приложение для просмотра картинок. Как зациклить этот адаптер?
Здравствуйте. Не хватает знаний/мозгов как в идеале сделать &quot;карусель&quot; из картинок (т.е. чтобы после запуска уже можно было перейти на...

1
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
05.08.2022, 13:15
ну так в чем проблема?
опишите полностью
Цитата Сообщение от Corp_Post_1 Посмотреть сообщение
1. Имеется фон в формате PNG или JPG (создан в CorelDRAW);
круто
Цитата Сообщение от Corp_Post_1 Посмотреть сообщение
2. На фон накладываются картинки в определенном порядке
так порядок какой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2022, 13:15
Помогаю со студенческими работами здесь

Создать объект для просмотра картинок(слайд-шоу), где по щелчку на кнопке происходит смена картинки
1)Создать выпадающие меню с помощью Select. 2)Создать форму для регистрации, используя поля Ф.И.О, пол, Адрес, E-MAIL, телефон, вопросы с...

Приложение для замены размера картинки
Помогите реализовать следующую функцию. На входе есть несколько изображений. Нужно на каждом изображении поменять ширину и высоту на 1...

Использование ресурсов WPF в других проектах одной сборки
Добрый день. Решил сделать локализацию своего проекта. За основу взял эту - http://habrahabr.ru/post/256193/ статью. В сборке...

Выбор карты для данной сборки и оценка сборки
Добрый вечер. Посмотрите пожалуйста сборку. Собираю в регарде. Собираю для игр не требовательных особо и может иногда для стрима (не...

Создать клиент-серверное приложение для трансляции картинки с web камеры
Доброго денечка :) Есть проект с подключением web камеры с использовавшем библиотеки AForge. Все хорошо камера врубается, картинка...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru