Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

Поместить картинку в DrawGrid из указанного пути

26.05.2015, 15:04. Показов 6209. Ответов 89
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня. Имеется папка с картинками (50х50). Каждой картинке соответствует свой номер (наверное сделаю с помощью if). В простом гриде есть один столбец и в нем в строках (колличество строк>i>=0)занесены номера картинок. И есть аналогичный DrawGrid. Подскажите, как поместить картинки в строки (колличество строк>i>=0) DrawGrid из указанного пути (из папки на компе) и какие форматы возможны? Или таже задача с одной картинкой.
Может быть есть возможность не использовать DrawGrid, а просто создавать объект Image и помещать его на форму из указанного пути?
Спасибо.

Добавлено через 1 час 24 минуты
Вроде разобрался. По кнопке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TImage* Image[1000];
    int f = 1; int h = 20;
    for( int y = StringGrid1->FixedRows ; y < StringGrid1->RowCount; y++)
    {
       for(int z = 0; z<100; z++)
          {
             if (StringGrid1->Cells[0][y].Pos(z))
             {
 
               Image[f]=new TImage(Form1);
                Image[f]->Parent=Form1;
                Image[f]->Picture->Bitmap->LoadFromFile("12_50x50.bmp"); // из файла
                 Image[f]->Stretch=true;
                Image[f]->Left = 10;
                Image[f]->Top = h;
                Image[f]->Width = 50;
                Image[f]->Height = 50;
                    f++; h = h+60;
             }
        }
    }
Но появился еще вопрос. У меня имена файлов начинаются на тот или иной z
Можно както это использовать, задавать не полностью имя в пути к файлу, а только его часть, а именно первые два символа(этот z) ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2015, 15:04
Ответы с готовыми решениями:

Вставить картинку в поле DrawGrid
Всем привет. Подскажите плиз, а то гуглил гуглил, так и не получиось. Как вставить картинку в поле DrawGrid?

Обработка файла указанного в пути
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #include &quot;clanfun.h&quot; void main(int argc, char* argv) { int width,...

Открытие Word файла из указанного пути
Подскажите, может кто то уже делал открытие Word файла из указанного пути. Добавлено через 2 часа 23 минуты Поиск я делал :)

89
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
04.06.2015, 13:11
Студворк — интернет-сервис помощи студентам
.. да-да, до меня только сейчас дошло... . Первое впечатление бывает обманчивым.
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
05.06.2015, 09:42  [ТС]
Посидел, посмотрел - как то неправильно я сделал. Глючит, когда создается панель, похоже пересоздаются все остальные и если быстро создаются - вообще может вылететь с ошибкой в любом месте програмы. .
Цитата Сообщение от volvo Посмотреть сообщение
Прекрасно. Пришла тревога - сгенерировал панельку 10*10 красного цвета в нужных координатах, указатель на нее затолкал в массив (или список, что удобнее - тебе решать). По тику таймера просто ходишь по всему массиву этих красных панелек и делаешь
Помоему у меня ошибка в обходе массива. Если можно - пару слов - как правильно его обходить?
Цитата Сообщение от volvo Посмотреть сообщение
for(int i = 0; i < alarmCount; i++)
и как правильно взять alarmCount? я так понимаю - это последний занятый элемент массива панелей. В моем случае если не делать redpanel++, они все равно нормально создаются. Но чего то тут не то..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
05.06.2015, 11:10
alarmCount в моем примере - это количество тех самых красных панелек, которые должны мигать. То есть, я бы делал так: пришел сигнал тревоги - сгенерировал панель, добавил ее в массив (отдельный массив, а не все вместе, как ты делаешь) или в std::vector<TPanel*>, что еще лучше, не надо отдельно хранить длину массива и позже можно спокойно удалить ставшую неактуальной панельку, и в таймере переключал бы видимость панелей, присутствующих в контейнере.
Цитата Сообщение от Sergey_03 Посмотреть сообщение
когда создается панель, похоже пересоздаются все остальные
Это вообще непонятно. Как могут все панели пересоздаваться при создании одной дополнительной? Надо больше кода, где создается красная панелька, по какому событию. Из того, что ты привел - этого не видно.

Добавлено через 6 минут
А вообще - я бы наверное сделал возможность каждой из панелек быть с красным прямоугольником в углу (написал бы своего наследника от TPanel), и по прибытию сигнала тревоги просто включал бы какой-то флажок. А потом, в таймере, просто обход всех панелек и проверка флажка, если выставлен - то вызывать какой-то метод, toggleAlarm(), например, который на этой текущей панели будет показывать/скрывать прямоугольник , означающий "тревога"... Количество действий сильно уменьшится, и программа разгрузится. Уже не надо будет дополнительно хранить эти панели, искать, куда их расположить, и т.д., просто найти ту панель, которая нужна, и выставить ей флажок. У тебя проект слишком большой (11-я форма, 26-я - уже немало), чтобы легкомысленно относиться к подобным вещам. Чем дальше - тем больше будет глюков и непонятного поведения, и, видишь, ты уже с этим сталкиваешься...
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
05.06.2015, 12:17  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
std::vector<TPanel*>
можно по подробнее..
у меня сейчас ситуация,когда я создаю (готовлю) карту в отдельном приложении. Загружаю в него план помещений, все картинки девайсов в панельках. На выходе получаю первое - файл jpg - картинка карты с расставленными девайсами и второе - координаты девайсов (int), которые сохранились в процессе расстановки. Потом я эту карту подгружаю в основную программу и при сигнале тревоги формирую красную мигающую панельку по тем или иным координатам. Таким образом эта панелька появляется в нужном месте готовой карты над нужным девайсом. Проблема в том, что событий будет как минимум 5 (в том числе и сигнал тревоги) и все это, как снежный ком будет нагружать программу по графике. Кроме того я попробовал вместо панелей создавать Animate, на там вообще нагружает по черному, хотя размер файла 34 кб.
Сечас попробовал использовать Frame. Пишу
C++
1
2
3
4
5
6
7
8
9
10
if(
     (rec_event.event_type == EVT_DET_ALARM)||
     (rec_event.event_type == EVT_MB400_ALARM)
  )
           {
                        TFrame *red= new TFrame6(Frame6);
                        red->Left = pm.d[devLoop].d_X[devAdr];
                    red->Top = pm.d[devLoop].d_Y[devAdr];
                    red->Parent = Form26->Panel22;
                   }
Все работает, но наверное можно сделать более правильно таким образом.Кстати с панелькой тоже можно - в фрейме панель и таймер, как описано выше и фрейм под размер панели, потому что я не понимаю, как брать панель из фрейма, а не весь фрейм. Может так имеет смысл делать?
Тут приоритет на наименьшую нагрузку очень важен. И можно например как то сделать, чтобы не создавался динамический объект, если по тем координатам, по которым он будет визуализирован, аналогичный объект уже есть. Спасибо.
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
07.06.2015, 00:17  [ТС]
Вроде добился стабильной работы. Ничего не пересоздается заново. У меня там просто достаточно сложно с идентификацией событий. Через флаги все сделал. Но очень хотел бы не создавать динамический объект, если по тем координатам, по которым он будет визуализирован, аналогичный объект уже есть. Я так понимаю, нужно добавлять в условие, помимо наступления события что то еще. Вообще это реально? и про std::vector<TPanel*> объясните плиз в трех словах как создать через вектор массив панелей и как с ними работать? Это уровень повыше по всей видимости. Гуглю - нифига не понятно.( спасибо!
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
10.06.2015, 15:04  [ТС]
И не подскажете такой момент. У меня карта - Image1 в Panel1, к ней тоже применены
C++
1
2
3
Image1-> OnMouseDown =DinDown;
Image1-> OnMouseEnter =DinDown1;
Image1-> OnMouseLeave =DinDown2;
Как сделать, чтобы когда картинки в панельках расставлены на Image1(карте), при таскании Image1, картинки в панельках сохраняли свои координаты относительно Image1, то есть таскались вместе с картой.?
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
12.06.2015, 17:34  [ТС]
не получается...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
13.06.2015, 10:00
У меня уже тут все перепуталось, что делали, как делали, какие обработчики событий навешаны. Так что, скорее всего, без просмотра проекта тут уже не обойтись. Слишком много добавлено, чтобы можно было так, наобум, сказать в чем дело.

Добавлено через 16 часов 14 минут
Итак, продолжаем нашу сагу

По поводу перемещения панелек вместе с картой - проблема в том, что ты добавил карту на TPanel, чтобы ее тоже можно было перемещать, а при перетаскивании картинок из ScrollBox-а этого не учел. И картинки эти бросаются на Form, никакого отношения к карте не имея. Естественно при этом, что при перетаскивании карты они остаются на месте. Как исправить:
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
const int SC_DRAGMOVE = 0xF012;
 
// добавить метод "таскание карты" (не забываем про добавление заголовка в класс формы)
void __fastcall TForm1::MapDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    TImage *im = static_cast<TImage*>(Sender);
    ReleaseCapture();
    im->Parent->Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
    tagTRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(tme);
    tme.dwFlags = TME_LEAVE;
    tme.hwndTrack = im->Parent->Handle;
    ::TrackMouseEvent(&tme);
 }
 
// поправить метод "таскание картинок"
void __fastcall TForm1::DinDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    TImage *im = static_cast<TImage*>(Sender);
    if (im->Parent->Parent != Panel2) // Раз карта лежит на Panel2, то и картинку надо перетаскивать на Panel2
    {
        im->Parent->Parent = Panel2; // Здесь тоже
        // Поскольку Panel2 не находится в цепочке Parent-ов ScrollBox-а, нельзя сразу преобразовать координаты
        // приходится делать это через координаты относительно формы
        TPoint p = ScrollBox1->ClientToParent(Point(im->Parent->Left,im->Parent->Top), this);
        // а теперь - в систему координат Panel2
        p = Panel2->ParentToClient(p, this);
        im->Parent->Left = p.x;
        im->Parent->Top = p.y;
    }
    ReleaseCapture();
    im->Parent->Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
    tagTRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(tme);
    tme.dwFlags = TME_LEAVE;
    tme.hwndTrack = im->Parent->Handle;
    ::TrackMouseEvent(&tme);
 }
 
// и в конструкторе формы:
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Image1-> OnMouseDown = MapDown; // Вот тут, назначить метод для таскания карты вместо того, что было раньше
    Image1-> OnMouseEnter = DinDown1;
    Image1-> OnMouseLeave = DinDown2;
}
Теперь картинки, вынесенные из ScrollBox-а будут перемещаться вместе с перетягиваемой картой.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.06.2015, 10:13  [ТС]
Спасибо, все работает. Еще есть несколько вопросов, по мере продвижения...
когда я например загружаю карту предположим 3000 пх на 2000 пх - он сохраняет только видимую часть карты(которая видна на мониторе) - то, что за границей - все белое. Но сам сохраненный файл имеет те же 3000 на 2000. Наверное всю карту никак не сохранить?
так же есть вопрос про панельки в скролбоксе и масштабирование карты-
как сделать, чтобы я например хватаю панельку из скрол бокса, перетаскиваю на карту, и при её отпускании все панельки, которые были под панелькой, которую я схватил, поднялись на одну выше, то есть вверх в скролбоксе. Расставлять так удобней было бы. и про масштабирование карты - это к основной программе относится, но я бы попробовал и тут применить.То есть или по кнопкам - увеличить, уменьшить, или колесом мыши.
Спасибо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
13.06.2015, 10:48
Цитата Сообщение от Sergey_03 Посмотреть сообщение
хватаю панельку из скрол бокса, перетаскиваю на карту, и при её отпускании все панельки, которые были под панелькой, которую я схватил, поднялись на одну выше
Зачем при отпускании? Сразу и переноси:

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
void __fastcall TForm1::DinDown(TObject *Sender, TMouseButton Button,
    TShiftState Shift, int X, int Y)
{
    const int SC_DRAGMOVE = 0xF012;
    TImage *im = static_cast<TImage*>(Sender);
    if (im->Parent->Parent != Panel2)
    {
 
        // вот оно
        int pos = im->Parent->Top;
        for(int i = 2; i < f; i++)
        {
            if(Panel[i]->Top > pos)
            {
                Panel[i]->Top -= 60; // у тебя же на 60 отличаются Top-ы всех панелек?
            }
        }
 
        im->Parent->Parent = Panel2;
        TPoint p = ScrollBox1->ClientToParent(Point(im->Parent->Left, im->Parent->Top), this);
        p = Panel2->ParentToClient(p, this);
        im->Parent->Left = p.x;
        im->Parent->Top = p.y;
    }
    ReleaseCapture();
    im->Parent->Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
    tagTRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(tme);
    tme.dwFlags = TME_LEAVE;
    tme.hwndTrack = im->Parent->Handle;
    ::TrackMouseEvent(&tme);
}
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.06.2015, 12:26  [ТС]
Да, да, по этому вопросу то что надо.
Только проблема в том, что при клике на панельку, координаты Top уже расставленных тоже подымаются.

Добавлено через 3 минуты
Наверное какое то условие возможно добавить по месту нахождения панелек..

Добавлено через 1 час 16 минут
Вот так работает.
C++
1
2
3
4
5
6
7
8
int pos = im->Parent->Top;
for(int i = 2; i < f; i++)
        {
            if((Panel[i]->Top > pos)&&(Panel[i]->Parent == ScrollBox1))//тут добавил
                    {
                        Panel[i]->Top -= 60; // у тебя же на 60 отличаются Top-ы всех панелек?
                    }
        }
правильно так будет?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
13.06.2015, 12:47
А, ну да. А я проверял на картинках, которые в нижней части ScrollBox-а, тогда ошибка не проявляется. Да, можно так изменить.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.06.2015, 19:37  [ТС]
Если поставить свойство формы AutoSize = 1, картинка карты сохраняется вся, независимо от того, насколько она вылезает за границы экрана. Нет ли тут подвоха?
И сохраняет как то иногда нормально, иногда с артефактами от панелей..
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.06.2015, 20:04  [ТС]
C++
1
2
3
4
5
6
7
8
9
Panel2->BringToFront();
Panel2->Left=0;
Panel2->Top=0;
std::auto_ptr<Graphics::TBitmap>bmp(new Graphics::TBitmap);
bmp->SetSize(Panel2->Width, Panel2->Height);
::BitBlt(bmp->Canvas->Handle, 0, 0, Panel2->Width, Panel2->Height,
::GetDC(Panel2->Handle), 0, 0, SRCCOPY);
bmp->SaveToFile("c:\\test\\pic.bmp");
Panel2->SendToBack();
Не смотря на Panel2->BringToFront(); все видно, чего не надо
Такое впечатление, что чего то не успевает..
Миниатюры
Поместить картинку в DrawGrid из указанного пути  
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
14.06.2015, 09:43  [ТС]
Вот так вроде работает. Видимо дает время на перенос панели вперед
C++
1
2
3
4
5
6
7
8
9
10
11
    Panel2->BringToFront();
    Panel2->Top = 0; Panel2->Left = 0;
    if (SavePictureDialog1->Execute())
    {
    std::auto_ptr<Graphics::TBitmap>bmp(new Graphics::TBitmap);
    bmp->SetSize(Panel2->Width, Panel2->Height);
    ::BitBlt(bmp->Canvas->Handle, 0, 0, Panel2->Width, Panel2->Height,
    ::GetDC(Panel2->Handle), 0, 0, SRCCOPY);
    bmp->SaveToFile(SavePictureDialog1->FileName);
    }
    Panel2->SendToBack();
А вообще можно как то без диалога заставить не глючить? Диалог не помешает, но спортивный интерес имеется..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
14.06.2015, 12:29
Цитата Сообщение от Sergey_03 Посмотреть сообщение
можно как то без диалога заставить не глючить?
Просто перерисуй Repaint()-ом после того, как сделал BringToFront(), должно сработать

Добавлено через 56 секунд
Кстати, после внимательного просмотра кода, выяснилась утечка: GetDC есть, ReleaseDC отсутствует.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
14.06.2015, 12:42  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Repaint()
Да, работает, спасибо!
Цитата Сообщение от volvo Посмотреть сообщение
выяснилась утечка: GetDC есть, ReleaseDC отсутствует.
Не понял, можно по подробнее...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
14.06.2015, 12:49
Куда ж подробнее: MSDN говорит:
GetDC
// ...
After painting with a common DC, the ReleaseDC function must be called to release the DC
У тебя вызывается GetDC, а освобождения нет нигде. Перепиши вот так:

C++
1
2
3
4
5
6
7
8
    std::auto_ptr<Graphics::TBitmap>bmp(new Graphics::TBitmap);
    bmp->SetSize(Panel2->Width, Panel2->Height);
 
    HDC hdc = ::GetDC(Panel2->Handle);
    ::BitBlt(bmp->Canvas->Handle, 0, 0, Panel2->Width, Panel2->Height, hdc, 0, 0, SRCCOPY);
    ::ReleaseDC(Panel2->Handle, hdc);
 
    bmp->SaveToFile(filename);
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
14.06.2015, 16:14  [ТС]
Да, сколько разных нюансов.... Спасибо большое.
Задумался сейчас по поводу масштабирования.Вообще реально все это дело, если картинка очень большая - уменьшить до разумных пределов? Там потянутся пересчет координат панелек, изменение их размера и наверное куча всякого...Вообще это сложно, или есть способ, применимый к моей задаче, доступный для понимания..?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
14.06.2015, 16:24
Чем не устраивает описанный способ с пересчетом координат, изменением размера, и т.д.? Не так уж много работы.

Интереснее другое: насколько сильно будет масштабироваться карта? И что при максимально возможном коэффициенте масштабирования можно будет рассмотреть на маленьких картинках, если их тоже масштабировать)? Скажем, чтобы карту размером 4000 пикселей поместить целиком на экран 1920 px шириной, нужно будет размер маленьких панелек уменьшить до 25 пикселей. И что ты на них увидишь при этом? А если будет картинка 6000 пикселей? А если при этом еще разрешение экрана по горизонтали не 1920, а 1200, например?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2015, 16:24
Помогаю со студенческими работами здесь

Как получить родительский каталог относительно указанного пути
Как организовать обратный переход по папкам в С#? Например: 2 папка лежит в первой, мне необходимо из 2 выйти в первую и там уже...

Копирование картинки из drawgrid в drawgrid
В общем имеется два компонента drawgrid. В один компонент загружены картинки через массив Bitmap. Как можно сделать так, чтобы при нажатии...

Картинку из БД поместить в кнопку
Мне нужно сделать тест по формулам. Формулы я поместил картинками в бд. Как можно из бд в кнопку передать картинку? Поля в таблице vop,...

Поместить текст под картинку
Как можно поместить текст под картинку? &lt;table class=&quot;table_folder&quot;&gt; &lt;tr&gt; &lt;td&gt;&lt;a class=&quot;text&quot; href=&quot;#&quot;&gt;&lt;img...

Поместить картинку в центре виджета
Немного не понимаю как сделать. Есть скрипт ротации баннеров, немогу отцентрировать &lt;script&gt; var banner = new Array() ...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru