Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2

Принтер должен "Принтовать" image1

10.06.2011, 23:31. Показов 1999. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня ест вот такой код, он по моей идее должен принтовать Image1? по вашему будет работать, у меня принтер нету , пожолуйсто ответте, спасибо заранее
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm24::PrintClick(TObject *Sender)
{
Graphics::TBitmap *bmp =  new Graphics::TBitmap();
TPrinter *prnt = new TPrinter();
bmp->Assign(DBImage1->Picture);
prnt->Canvas->Draw(10,10,bmp);
prnt->BeginDoc();
//prnt->EndDoc();
delete bmp;
delete prnt;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2011, 23:31
Ответы с готовыми решениями:

Delphi 7. Почему на одном компе содержимое Image1.Canvas выводится на принтер, а на другом нет?
То есть, код на компе с Windows 7 (разрешение экрана 1366*768) выполняется как надо, а на компе с Windows XP (разрешение экрана 1024*768)...

Как сделать, чтобы от сервера передавалась картинка из Image1 на Клиент в Image1?
Здравствуйте! как сделать чтобы от сервера передавалась картинка из Image1 на Клиент в Image1 :help: дело в том если сохраняю файл и...

При нажатии на image1 нужно чтобы загружаемая картинка встала поверх image1
При нажатии на image1 нужно чтобы загружаемая картинка встала поверх image1. При чем чтобы положение картинки было по середине и сверху...

7
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2011, 23:39
посмотри, там есть про битмам
и принтер не "принтует", а печатает
Самый простой способ напечатать TImage, это воспользоваться методом print в TForm, которая содержит только битмап. Этот способ работает, однако такая картинка напечатается либо очень маленькой, либо вообще не напечатается. Следующий код позволяет напечатать TImage на всю страницу. Так же Вы можете изменить масштаб и напечатать картинку любого размера.

Замечание: картинка должна содержать Bitmap.
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*---------------------------------------------------------------------Эта функция является обработчиком события OnClick для TButton, которая
находится на TForm. На TForm также присутствует TImage с именем image.
---------------------------------------------------------------------*/
void __fastcall Tmain_form::print_image_btnClick(TObject *Sender)
{
  TPrinter *p = Printer();
 
  // создаём в памяти dc для картинки
  HDC h_dc = image->Picture->Bitmap->Canvas->Handle;
  int bmp_w = image->Picture->Bitmap->Width,
  bmp_h = image->Picture->Bitmap->Height;
  HDC h_mem_dc = ::CreateCompatibleDC (h_dc);
  HBITMAP h_mem_bmp = ::CreateCompatibleBitmap (h_dc, bmp_w, bmp_h);
  HBITMAP h_old_bmp = ::SelectObject (h_mem_dc, h_mem_bmp);
 
  // фиксируем ошибки видео драйверов
  bool is_pal_dev = false;
  LOGPALETTE *pal;
  HPALETTE h_pal, h_old_pal;
 
  if (::GetDeviceCaps (image->Canvas->Handle, RASTERCAPS) & RC_PALETTE)
  {
    pal = static_cast(malloc (sizeof (LOGPALETTE) +
                    (sizeof (PALETTEENTRY) * 256)));
    memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
    pal->palVersion = 0x300;
    pal->palNumEntries = ::GetSystemPaletteEntries(image->Canvas->Handle, 0,
                            256, pal->palPalEntry);
    if (pal->palNumEntries != 0)
    {
      h_pal = ::CreatePalette (pal);
      h_old_pal = ::SelectPalette (h_mem_dc, h_pal, false);
      is_pal_dev = true;
    }
    else
    {
      free (pal);
    }
  }
 
  // копируем картинку на dc в памяти
  ::BitBlt (h_mem_dc, 0, 0, bmp_w, bmp_h, h_dc, 0, 0, SRCCOPY);
 
  if (is_pal_dev)
  {
    ::SelectPalette (h_mem_dc, h_old_pal, false);
    ::DeleteObject (h_pal);
  }
 
  // удаляем dc в памяти
  ::SelectObject (h_mem_dc, h_old_bmp);
  ::DeleteDC (h_mem_dc);
 
  // выделяем память для структуры BITMAPIFO
  HANDLE h_bmp_info = ::GlobalAlloc (GHND,
              sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 256));
  BITMAPINFO* bmp_info = static_cast(::GlobalLock (h_bmp_info));
  //Заполняем структуру
  memset (bmp_info, NULL, sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 255));
  bmp_info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  bmp_info->bmiHeader.biPlanes = 1;
  bmp_info->bmiHeader.biBitCount = 8;
  bmp_info->bmiHeader.biWidth = bmp_w;
  bmp_info->bmiHeader.biHeight = bmp_h;
  bmp_info->bmiHeader.biCompression = BI_RGB;
 
  // определяем размер памяти для битов
  ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, NULL, bmp_info, DIB_RGB_COLORS);
 
  // Выделяем память для битов
  HANDLE h_bits = GlobalAlloc (GHND, bmp_info->bmiHeader.biSizeImage);
  void *bits = ::GlobalLock (h_bits);
 
  // получаем биты
  ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, bits, bmp_info, DIB_RGB_COLORS);
 
  // фиксируем ошибки видео драйверов
  if (is_pal_dev)
  {
    for (int i = 0; i palNumEntries; i++)
    {
      bmp_info->bmiColors[i].rgbRed = pal->palPalEntry[i].peRed;
      bmp_info->bmiColors[i].rgbGreen = pal->palPalEntry[i].peGreen;
      bmp_info->bmiColors[i].rgbBlue = pal->palPalEntry[i].peBlue;
    }
    free (pal);
  }
 
  // начинаем печать
  p->BeginDoc ();
 
  // масштабируем размер печати
  int scale_x, scale_y;
  if (p->PageWidth PageHeight)
  {
    scale_x = p->PageWidth;
    scale_y = image->Picture->Height * (p->PageWidth / bmp_w);
  }
  else
  {
    scale_x = image->Picture->Width * (p->PageHeight / bmp_h);
    scale_y = p->PageHeight;
  }
 
  // устанавливаем палитру печати
  is_pal_dev = false;
  if (::GetDeviceCaps (h_dc, RASTERCAPS) & RC_PALETTE)
  {
    pal = static_cast(malloc (sizeof (LOGPALETTE) +
                     (sizeof (PALETTEENTRY) * 256)));
    memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
    pal->palVersion = 0x300;
    pal->palNumEntries = 256;
    for (int i = 0; pal->palNumEntries; i++)
    {
      pal->palPalEntry[i].peRed = bmp_info->bmiColors[i].rgbRed;
      pal->palPalEntry[i].peGreen = bmp_info->bmiColors[i].rgbGreen;
      pal->palPalEntry[i].peBlue = bmp_info->bmiColors[i].rgbBlue;
    }
    h_pal = CreatePalette(pal);
    free (pal);
    h_old_pal = SelectPalette(p->Canvas->Handle, h_pal, false);
    is_pal_dev = true;
  }
 
  // посылаем биты на принтер
  StretchDIBits(p->Canvas->Handle, 0, 0, scale_x, scale_y,
 0, 0, bmp_w, bmp_h, bits,bmp_info, DIB_RGB_COLORS, SRCCOPY);
 
  // конец печати
  p->EndDoc ();
 
  // освобождаем ресурсы
  ::DeleteObject (h_mem_bmp);
  if (is_pal_dev)
  {
    ::SelectObject (p->Canvas->Handle, h_old_pal);
    ::DeleteObject (h_pal);
  }
  ::GlobalUnlock (bits);
  ::GlobalFree (h_bits);
  ::GlobalUnlock (bmp_info);
  ::GlobalFree (h_bmp_info);
}
2
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
10.06.2011, 23:41  [ТС]
LK,
Cпасибо шас попробую
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2011, 23:43
потерялось начало:
C++
1
2
3
4
5
/*---------------------------------------------------------------------
Эта функция является обработчиком события
OnClick для TButton, которая находится на TForm.
На TForm также присутствует TImage с именем image.
---------------------------------------------------------------------*/
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
11.06.2011, 00:57  [ТС]
LK,
Пално ошибкамы и копи пеистил тоже но всё равно не работает

Добавлено через 7 минут
C++
1
2
3
4
5
6
[BCC32 Error] Unit24.cpp(100): E2034 Cannot convert 'void *' to 'HBITMAP__ *' =1
[BCC32 Error] Unit24.cpp(109): E2274 < expected  =2
[BCC32 Error] Unit24.cpp(143): E2274 < expected =3
[BCC32 Error] Unit24.cpp(166): E2451 Undefined symbol 'palNumEntries' =4
[BCC32 Error] Unit24.cpp(180): E2451 Undefined symbol 'PageHeight' =5
[BCC32 Error] Unit24.cpp(195): E2274 < expected
=6


Вообшемто ошибки выподают в етих строках

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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
 TPrinter *p = Printer();
 
  // создаём в памяти dc для картинки
  HDC h_dc = Image1->Picture->Bitmap->Canvas->Handle;
  int bmp_w = Image1->Picture->Bitmap->Width,
  bmp_h = Image1->Picture->Bitmap->Height;
  HDC h_mem_dc = ::CreateCompatibleDC (h_dc);
  HBITMAP h_mem_bmp = ::CreateCompatibleBitmap (h_dc, bmp_w, bmp_h);
 1.[b] HBITMAP h_old_bmp = SelectObject (h_mem_dc, h_mem_bmp); [b]
 
  // фиксируем ошибки видео драйверов
  bool is_pal_dev = false;
  LOGPALETTE *pal;
  HPALETTE h_pal, h_old_pal;
 
  if (::GetDeviceCaps (Image1->Canvas->Handle, RASTERCAPS) & RC_PALETTE)
  {
   2.[b] pal = static_cast(malloc (sizeof (LOGPALETTE) + [/b]
                    (sizeof (PALETTEENTRY) * 256)));
    memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
    pal->palVersion = 0x300;
    pal->palNumEntries = ::GetSystemPaletteEntries(Image1->Canvas->Handle, 0,
                            256, pal->palPalEntry);
    if (pal->palNumEntries != 0)
    {
      h_pal = ::CreatePalette (pal);
      h_old_pal = ::SelectPalette (h_mem_dc, h_pal, false);
      is_pal_dev = true;
    }
    else
    {
      free (pal);
    }
  }
 
  // копируем картинку на dc в памяти
  ::BitBlt (h_mem_dc, 0, 0, bmp_w, bmp_h, h_dc, 0, 0, SRCCOPY);
 
  if (is_pal_dev)
  {
    ::SelectPalette (h_mem_dc, h_old_pal, false);
    ::DeleteObject (h_pal);
  }
 
  // удаляем dc в памяти
  ::SelectObject (h_mem_dc, h_old_bmp);
  ::DeleteDC (h_mem_dc);
 
  // выделяем память для структуры BITMAPIFO
  HANDLE h_bmp_info = ::GlobalAlloc (GHND,
              sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 256));
 3.[b] BITMAPINFO* bmp_info = static_cast(::GlobalLock (h_bmp_info));[/b]
  //Заполняем структуру
  memset (bmp_info, NULL, sizeof (BITMAPINFO) + (sizeof (RGBQUAD) * 255));
  bmp_info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  bmp_info->bmiHeader.biPlanes = 1;
  bmp_info->bmiHeader.biBitCount = 8;
  bmp_info->bmiHeader.biWidth = bmp_w;
  bmp_info->bmiHeader.biHeight = bmp_h;
  bmp_info->bmiHeader.biCompression = BI_RGB;
 
  // определяем размер памяти для битов
  ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, NULL, bmp_info, DIB_RGB_COLORS);
 
  // Выделяем память для битов
  HANDLE h_bits = GlobalAlloc (GHND, bmp_info->bmiHeader.biSizeImage);
  void *bits = ::GlobalLock (h_bits);
 
  // получаем биты
  ::GetDIBits (h_dc, h_mem_bmp, 0, bmp_h, bits, bmp_info, DIB_RGB_COLORS);
 
  // фиксируем ошибки видео драйверов
  if (is_pal_dev)
  {
 4.[b]   for (int i = 0; i< palNumEntries; i++)[/b]
    {
      bmp_info->bmiColors[i].rgbRed = pal->palPalEntry[i].peRed;
      bmp_info->bmiColors[i].rgbGreen = pal->palPalEntry[i].peGreen;
      bmp_info->bmiColors[i].rgbBlue = pal->palPalEntry[i].peBlue;
    }
    free (pal);
  }
 
  // начинаем печать
  p->BeginDoc ();
 
  // масштабируем размер печати
  int scale_x, scale_y;
 5.[b] if (p->PageWidth== PageHeight)[/b]
  {
    scale_x = p->PageWidth;
    scale_y = Image1->Picture->Height * (p->PageWidth / bmp_w);
  }
  else
  {
    scale_x = Image1->Picture->Width * (p->PageHeight / bmp_h);
    scale_y = p->PageHeight;
  }
 
  // устанавливаем палитру печати
  is_pal_dev = false;
  if (::GetDeviceCaps (h_dc, RASTERCAPS) & RC_PALETTE)
  {
 6.[b]   pal = static_cast(malloc (sizeof (LOGPALETTE) +[/b]
                     (sizeof (PALETTEENTRY) * 256)));
    memset (pal, 0, sizeof (LOGPALETTE) + (sizeof (PALETTEENTRY) * 256));
    pal->palVersion = 0x300;
    pal->palNumEntries = 256;
    for (int i = 0; pal->palNumEntries; i++)
    {
      pal->palPalEntry[i].peRed = bmp_info->bmiColors[i].rgbRed;
      pal->palPalEntry[i].peGreen = bmp_info->bmiColors[i].rgbGreen;
      pal->palPalEntry[i].peBlue = bmp_info->bmiColors[i].rgbBlue;
    }
    h_pal = CreatePalette(pal);
    free (pal);
    h_old_pal = SelectPalette(p->Canvas->Handle, h_pal, false);
    is_pal_dev = true;
  }
 
  // посылаем биты на принтер
  StretchDIBits(p->Canvas->Handle, 0, 0, scale_x, scale_y,
 0, 0, bmp_w, bmp_h, bits,bmp_info, DIB_RGB_COLORS, SRCCOPY);
 
  // конец печати
  p->EndDoc ();
 
  // освобождаем ресурсы
  ::DeleteObject (h_mem_bmp);
  if (is_pal_dev)
  {
    ::SelectObject (p->Canvas->Handle, h_old_pal);
    ::DeleteObject (h_pal);
  }
  ::GlobalUnlock (bits);
  ::GlobalFree (h_bits);
  ::GlobalUnlock (bmp_info);
  ::GlobalFree (h_bmp_info);
 
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.06.2011, 01:18
Programmer., то , что ты показал - это все строки , хорошо - хоть на БатонКлик не ругается

ты пробовал на это
C++
1
// фиксируем ошибки видео драйверов
и все, что к этому относится, не смотреть, а использовать только то, что относится к обсуждаемому вопросу ?
далеко не всегда копипейст - единственно верное решение...
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
11.06.2011, 16:29  [ТС]
LK,
АА понял шас, я виясну тут что как и ришу задачу

Добавлено через 10 часов 53 минуты
LK,

Ну можеш подсказать что мне из етого конкретно нужно ато водился всю ноч и так и не смог написать

Добавлено через 4 часа 8 минут
LK

Помоги пожалуисто вот в етих строках и если не вес код то как всё сделать чтоб печатало?
Цитата Сообщение от Programmer. Посмотреть сообщение
HBITMAP h_old_bmp = SelectObject (h_mem_dc, h_mem_bmp)
Цитата Сообщение от Programmer. Посмотреть сообщение
pal = static_cast(malloc (sizeof (LOGPALETTE) +
Цитата Сообщение от Programmer. Посмотреть сообщение
BITMAPINFO* bmp_info = static_cast(::GlobalLock (h_bmp_info));
Цитата Сообщение от Programmer. Посмотреть сообщение
for (int i = 0; i< palNumEntries; i++)
Цитата Сообщение от Programmer. Посмотреть сообщение
pal = static_cast(malloc (sizeof (LOGPALETTE) +
Добавлено через 1 минуту
Цитата Сообщение от Programmer. Посмотреть сообщение
if (p->PageWidth== PageHeight)
Вот еше
0
2 / 2 / 0
Регистрация: 25.07.2008
Сообщений: 8
25.10.2012, 16:49
Спасибо LK за пример кода - печатает!
Если не трудно, объясните кто-нибудь, почему вот этот простенький код вроде печатает, но далеко не на всех принтерах

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
TPrinter * print;
Graphics::TBitmap* pBmp;
pBmp = new Graphics::TBitmap();
 
if(PrintDialog1->Execute())
{
print=Printer();
TRect pr;
float aspect;
if (print->Orientation!=poLandscape)  print->Orientation=poLandscape;
 
print->Copies=PrintDialog1->Copies;
aspect=PaintBox1->Canvas->ClipRect.Width()/PaintBox1->Canvas->ClipRect.Height();
// масштабируем канву принтера
pr=print->Canvas->ClipRect;
pr.Bottom=pr.Width()/aspect;
//заполнем битмап
pBmp->Width=PaintBox1->Width;
pBmp->Height=PaintBox1->Height;
pBmp->Canvas->Brush->Color=clWhite;
pBmp->Canvas->Pen->Color=clWhite;
pBmp->Canvas->CopyRect(pBmp->Canvas->ClipRect,PaintBox1->Canvas,PaintBox1->Canvas->ClipRect);
// начинаем печать
print->BeginDoc();
print->Canvas->StretchDraw(pr,pBmp);
print->EndDoc();
}
pBmp->Free();
Причем использование метода CopyRect на канву принтера при печати на один из принтеров сваливал комп в "экран смерти" Метод StretchDraw работает, но на половине принтеров выходит пустой лист.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2012, 16:49
Помогаю со студенческими работами здесь

image1.Refresh;image1.Repaint
как можно избавиться при обновлении( перерисовка) image от мигания??? например procedure TForm1.timer1Timer(Sender: TObject); begin ...

JPEG->MemoryStream = 120тиков а JPEG->Image1 и Image1->MemoryStream = 30тиков?
Добрый вечер. Впринципе название темы все объясняет. Ради любопытства думал что может по умолчанию размер JPEGa не задан и он кроме рисунка...

на кнопку кликаешь, Image1.Visible:=False; Image2.Visible:=True; Eще раз ликаешь, Image1.Visible:=True; Image2.Visible:=False.
на кнопку кликаешь, Image1.Visible:=False; Image2.Visible:=True; Eще раз ликаешь, Image1.Visible:=True; Image2.Visible:=False. ...

Принтер HP Lazerjet pro MFP M125R как сетевой принтер
Здравствуйте, есть два компьютера, роутер и принтер без приблуд, просто с USB. Оба компьютера получают интернет через кабель к роутеру,...

Принтер epson l132 распознается компьютером как принтер l360
У меня есть принтер epson l132, в компе он всегда определялся как l132 до недавнего времени, буквально вчера мне надо было распечатать один...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru