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

Анимация Canvas,Timage

02.06.2019, 17:54. Показов 4577. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возникла проблема при выполнении задания, вообщем-то необходимо построить модель атома. Суть проблемы состоит в анимации электронов, находящихся на различных уровнях.Прорисовать сами уровни с помощь TCanvas я смог, но вот встала проблема с движением электронов.Каким образом реализовать их движение? уже 2 сутки мучаюсь над буферами изображений для отрисовки, подключения библиотек для png,которые никак не хотят создавать динамически Timage. Просто сделать большое количество компонентов Timage и, вследствие, получая данные из файла, отправляя их в класс и запуская методы, которые будут включать видимость этих самых компонент для меня видится самым простым, но глупым решением.
Пожалуйста объясните каким образом лучше реализовать анимацию!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2019, 17:54
Ответы с готовыми решениями:

Анимация движения изображения квадрата по графику на Canvas
Нужна помощь...в создании как бы анимации с помощью Сanvas, которая будет идти по траектории графика заданой формулой.. Вот у меня есть...

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

Рисование на TImage
У меня есть картинка TImage и у нее загружается *.png файл. Нужно на этой картинке нарисовать красный прямоугольник, что я и делаю: ...

26
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
02.06.2019, 20:23
самым простым можно. нарисовать готовые картинки со смещением электронов и потом их выводить через таймер поочередно.

другой вариант.
BMP динамически созданы электроны, для каждого прописаны координаты движения. и через таймер их выводить.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.06.2019, 20:56
Рисовать в PaintBox
1
place status here
 Аватар для gunslinger
3189 / 2225 / 640
Регистрация: 20.07.2013
Сообщений: 6,021
03.06.2019, 02:05
Можешь такой вариант глянуть: C++ Builder - Orbita.
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
03.06.2019, 09:43
Бгг: Восход солнца на море
1
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
03.06.2019, 16:54  [ТС]
Спасибо всем, буду смотреть.

Добавлено через 22 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Рисовать в PaintBox
А в чем преимущество paintbox'a? и еще хотел узнать, есть ли возможность не прорисовывать динамически в компоненте timage изображение, а именно создавать этот новый компонент, не имея его в редакторе формы?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.06.2019, 18:05
Это не преимущество, это основное его назначение.
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
03.06.2019, 18:39  [ТС]
Не могли бы вы поподробнее описать в чем смысл использования именно tpaintbox'a или же дать ссылку на литературу, это ведь контейнер для изображений, я находил что-то про свойство Onpaint, но не очень понимаю принцип его работы, я буду очень благодарен, если вы поможете мне с этим
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
03.06.2019, 21:06  [ТС]
Я посмотрел данную тему, взял оттуда то, что так долго искал, теперь у меня возникла проблема с тем, что прорисовка границы не успевает за изображением, а также то,что границы остаются едиными и для ядра и для нейтрона
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
//---------------------------------------------------------------------------
#include "math.h"
#include <vcl.h>
#pragma hdrstop
 
#include "Unit9.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm9 *Form9;
int x,y;
int a,b,cntrx,cntry;
double alpha;
//---------------------------------------------------------------------------
__fastcall TForm9::TForm9(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm9::Timer1Timer(TObject *Sender)
{
bitmap->Canvas->Brush->Color = clWhite;
bitmap->Canvas->FillRect( this->Canvas->ClipRect );
bitmap->Canvas->Brush->Style = bsClear;
  bitmap->Canvas->Ellipse(x-25,y-25,x+25,y+25);
  x = cntrx + floor(a*cos(alpha));
  y = cntry + floor(b*sin(alpha));
  bitmap->Canvas->Pen->Color=clBlue;
  bitmap->Canvas->Brush->Color = clBlue;
  bitmap->Canvas->Ellipse(x-25,y-25,x+25,y+25);
  bitmap->Canvas->Brush->Style = bsClear;
   bitmap->Canvas->Pen->Color=clBlack;
  bitmap->Canvas->Brush->Color = clRed;
  bitmap->Canvas->Pen->Color=clBlue;
  bitmap->Canvas->Ellipse(cntrx-25,cntry-25,cntrx+25,cntry+25);
 
  alpha += 0.1;
  if (alpha >= 2*M_PI)
    alpha = 0;
    this->Canvas->Draw( 0, 0, bitmap );
}
//---------------------------------------------------------------------------
void __fastcall TForm9::Button1Click(TObject *Sender)
{
    x = Width/2;
  y = Height/3;
  a = 100;
  b = 100;
  alpha = 0;
  cntrx = Width/2;
  cntry = Height/2;
  Form9->Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm9::FormCreate(TObject *Sender)
{
bitmap = new Graphics::TBitmap;
this->DoubleBuffered = true;
this->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm9::FormResize(TObject *Sender)
{
bitmap->Width  = this->Width;
bitmap->Height = this->Height;
}
и .h
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
//---------------------------------------------------------------------------
 
#ifndef Unit9H
#define Unit9H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm9 : public TForm
{
__published:    // IDE-managed Components
    TTimer *Timer1;
    TButton *Button1;
    void __fastcall Timer1Timer(TObject *Sender);
    void __fastcall Button1Click(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormResize(TObject *Sender);
private: Graphics::TBitmap *bitmap; // User declarations
public:     // User declarations
    __fastcall TForm9(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm9 *Form9;
//---------------------------------------------------------------------------
#endif
Миниатюры
Анимация Canvas,Timage  
0
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
04.06.2019, 00:16
Цитата Сообщение от StalinGuf Посмотреть сообщение
границы остаются едиными и для ядра и для нейтрона
если честно я не имею никакого представления как должны двигаться объекты и по каким орбитам.
надо поиграть с формулой.
ведь после первого прохода в таймере значения для ядра и нейтрона станут равны с задержкой на расстоянии вычисленной из формулы
x = cntrx + floor(a*cos(alpha));
y = cntry + floor(b*sin(alpha));
если задать какое-то смещение к примеру
C++
1
2
3
4
5
6
7
8
9
10
11
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int x,y,h,v;
int a,b,cntrx,cntry;
double alpha;
и инициализация
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm9::Button1Click(TObject *Sender)
{
  x = h = Width/2;
  y = v = Height/3;
  a = 100;
  b = 100;
  alpha = 0;
  cntrx = Width/2;
  cntry = Height/2;
  Timer1->Enabled = true;
}
и в таймере
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
void __fastcall TForm9::Timer1Timer(TObject *Sender)
{
 bitmap->Canvas->Brush->Color = clWhite;
 bitmap->Canvas->FillRect( this->Canvas->ClipRect );
 bitmap->Canvas->Brush->Style = bsClear;
 bitmap->Canvas->Ellipse(x+h-25,y+v-25,h+x+25,v+y+25);// <-здесь
 
 
      x = cntrx + floor(a*cos(alpha));
      y = cntry + floor(b*sin(alpha));
 
     bitmap->Canvas->Pen->Color=clBlue;
     bitmap->Canvas->Brush->Color = clBlue;
     bitmap->Canvas->Ellipse(x-25,y-25,x+25,y+25);
 
     bitmap->Canvas->Brush->Style = bsClear;
     bitmap->Canvas->Pen->Color=clBlack;
     bitmap->Canvas->Brush->Color = clRed;
     bitmap->Canvas->Pen->Color=clBlue;
     bitmap->Canvas->Ellipse(cntrx-25,cntry-25,cntrx+25,cntry+25);
 
 
  alpha += 0.1;
  if (alpha >= 2*M_PI)
    alpha = 0;
    this->Canvas->Draw( 0, 0, bitmap );
}
но мой вариант неправильный по отношению к орбитам. это только пример показывает где должна быть разница в орбитах
1
 Аватар для lifeforce
266 / 211 / 89
Регистрация: 27.09.2010
Сообщений: 1,234
04.06.2019, 00:20
вот что получилось.
Миниатюры
Анимация Canvas,Timage  
1
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
04.06.2019, 19:48  [ТС]
Ну я вроде что-то подмудрил с тем, чтобы это работало как мне надо, теперь у меня встал вопрос- можно ли добавить на один уровень еще электронов? Начинаю играться с формулами и меняется движение и еще вопрос, возможно ли как-то запихнуть часть действий в класс? Поскольку сама суть задания состоит в считывании данных о нескольких атомов из файла, а после построения модели, нужно использовать класс и я ума не приложу, как можно использовать здесь класс.Неужто сам способ исполнения неверный и придется все начинать по-иному? Подскажите пожалуйста
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
//---------------------------------------------------------------------------
#include "math.h"
#include <vcl.h>
#pragma hdrstop
 
#include "Unit9.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm9 *Form9;
int x,y,h,v,z,l,m,j;
int a,b,cntrx,cntry;
double alpha;
//---------------------------------------------------------------------------
 
__fastcall TForm9::TForm9(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm9::Timer1Timer(TObject *Sender)
{
bitmap->Canvas->Brush->Color = clBtnFace;
 bitmap->Canvas->FillRect( this->Canvas->ClipRect );
 bitmap->Canvas->Brush->Style = bsClear;
 bitmap->Canvas->Brush->Color = clBlue;
 Canvas->Pen->Style=psClear;
      x = cntrx + floor(a*cos(alpha));
      y = cntry + floor(b*sin(alpha));
      h = cntrx - floor(a*cos(alpha));
      v = cntry -floor(b*sin(alpha));
 
 
      bitmap->Canvas->Ellipse(h-8,v-8,h+8,v+8);
     bitmap->Canvas->Brush->Color = clBlue;
     bitmap->Canvas->Ellipse(x-8,y-8,x+8,y+8);
     bitmap->Canvas->Ellipse(m-8,j-8,m+8,j+8);
     bitmap->Canvas->Brush->Style = bsClear;
     bitmap->Canvas->Brush->Color = clRed;
     bitmap->Canvas->Ellipse(cntrx-25,cntry-25,cntrx+25,cntry+25);
 
  alpha += 0.1;
  if (alpha >= 2*M_PI)
    alpha = 0;
    bitmap->Canvas->Brush->Style = bsClear;
    this->Canvas->Draw( 0, 0, bitmap );
}
//---------------------------------------------------------------------------
void __fastcall TForm9::Button1Click(TObject *Sender)
{
 x = h =  Width/2;
  y = v = Height/3;
  a = 100;
  b = 100;
  alpha = 0;
  cntrx = Width/2;
  cntry = Height/2;
  Timer1->Enabled = true;
 
}
//---------------------------------------------------------------------------
void __fastcall TForm9::FormCreate(TObject *Sender)
{
bitmap = new Graphics::TBitmap;
this->DoubleBuffered = true;
this->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm9::FormResize(TObject *Sender)
{
bitmap->Width  = this->Width;
bitmap->Height = this->Height;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm9::Timer2Timer(TObject *Sender)
{
   Canvas->Pen->Style=psDot;
 Canvas->Brush->Style = bsClear;
      Canvas->Ellipse(cntrx-100,cntry-100,cntrx+100,cntry+100);
}
//---------------------------------------------------------------------------
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
06.06.2019, 16:34
Лучший ответ Сообщение было отмечено StalinGuf как решение

Решение

Цитата Сообщение от StalinGuf Посмотреть сообщение
запихнуть часть действий в класс
Значит так. Все, что вы увидите далее, есть не более чем попытка наставить именно ваш код на путь истинный.

Создайте еще один модуль в вашем проекте (File->New->Unit), например, с именем Unit2.
В заголовок модуля поместите код из Unit2.h, а в тело модуля соответственно из Unit2.cpp.
На основной форме оставьте только кнопку и таймер. Код самой формы отредактируйте согласно Unit1.cpp.

Unit2.h
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
#include <StdCtrls.hpp>
 
#ifndef Unit2H
#define Unit2H
 
class Electron
{
private:
  Graphics::TBitmap *bitmap;
  int x,y,h,v,z,l,m,j;
  int a,b,cntrx,cntry;
  double alpha, d_alpha;
public:
  Electron()
  {
    bitmap = new Graphics::TBitmap;
  }
 
  void Resize(int Width, int Height);
  void Init(int a_, int b_, double alpha_, double d_alpha_);
  void Paint(TCanvas *Canv);
};
 
#endif

Unit2.cpp
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
//---------------------------------------------------------------------------
#include "math.h"
 
#pragma hdrstop
 
#include "Unit2.h"
 
void Electron::Resize(int Width, int Height)
{
  bitmap->Width = Width;
  bitmap->Height = Height;
}
 
void Electron::Init(int a_, int b_, double alpha_, double d_alpha_)
{
  x = h =  bitmap->Width/2;
  y = v = bitmap->Height/3;
  a = a_;
  b = b_;
  alpha = alpha_;
  d_alpha = d_alpha_;
  cntrx = bitmap->Width/2;
  cntry = bitmap->Height/2;
}
 
void Electron::Paint(TCanvas *Canv)
{
      x = cntrx + floor(a*cos(alpha));
      y = cntry + floor(b*sin(alpha));
      h = cntrx - floor(a*cos(alpha));
      v = cntry - floor(b*sin(alpha));
 
     Canv->Brush->Color = clBlue;
     Canv->Ellipse(h-8,v-8,h+8,v+8);
     Canv->Brush->Color = clRed;
     Canv->Ellipse(cntrx-25,cntry-25,cntrx+25,cntry+25);
 
  alpha += d_alpha;
  if (alpha >= 2*M_PI)
    alpha = 0;
}
 
#pragma package(smart_init)

Unit1.cpp
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
#include <vcl.h>
#include "math.h"
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
Electron Elec1, Elec2, Elec3;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  this->DoubleBuffered = true;
  this->Show();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormResize(TObject *Sender)
{
  Elec1.Resize(this->Width, this->Height);
  Elec2.Resize(this->Width, this->Height);
  Elec3.Resize(this->Width, this->Height);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  this->Canvas->Brush->Color = clBtnFace;
  this->Canvas->FillRect( this->Canvas->ClipRect );
 
  Elec1.Paint(this->Canvas);
  Elec2.Paint(this->Canvas);
  Elec3.Paint(this->Canvas);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Elec1.Init(100, 100, 0, 0.1);
  Elec2.Init(150, 200, 0, 0.2);
  Elec3.Init(200, 066, 0, -0.2);
  Timer1->Enabled = true;
}
2
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2019, 23:12
Цитата Сообщение от StalinGuf Посмотреть сообщение
Не могли бы вы поподробнее описать в чем смысл использования именно tpaintbox'a или же дать ссылку на литературу, это ведь контейнер для изображений, я находил что-то про свойство Onpaint, но не очень понимаю принцип его работы, я буду очень благодарен, если вы поможете мне с этим
Книги Архангельского.
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 8
08.06.2019, 12:42
Здравствуйте, вы написали "самым простым можно. нарисовать готовые картинки со смещением электронов и потом их выводить через таймер поочередно.". У меня похожая проблема, необходима анимация идущего человечка в с++ builder, как раз именно таким способом с выводом разных позиций человечка поочередно. Не могли бы, пожалуйста, объяснить как это делается, или дать ссылку на материал, где это объясняется, понимаю, что это наверное не очень сложно, но я плохо знакома с этим языком. Буду очень благодарна за любую помощь)
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,399
Записей в блоге: 3
08.06.2019, 13:25
Цитата Сообщение от vladi4ka Посмотреть сообщение
или дать ссылку на материал, где это объясняется
см. предыдущий пост...
0
0 / 0 / 0
Регистрация: 01.12.2018
Сообщений: 8
08.06.2019, 13:29
Вы про книги Архангельского ? Скачала книгу, в "разделе графика и мультимедиа" есть объяснения про анимацию, но там рассказывается и приводится пример про создание анимации по точкам координат, мне не нужно такое сложное исполнение. Просто поочередный вывод изображений, а об этом не рассказывается
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
08.06.2019, 18:00  [ТС]
Большое спасибо за проделанную работу и уделенное время, это очень помогло мне в решении моей проблемы, пока что все идет гладко, за исключение того, что я столкнулся с проблемой, когда создать новый метод или же добавить в старый, работу с Tcanvas, конкретно с Pen, почему-то компилятор ругается, хотя с Brush ничего подобного не было:
[bcc32c Error] Unit18.cpp(39): member reference type 'System::Uitypes::TColor' is not a pointer
[bcc32c Error] Unit18.cpp(40): member reference type 'Vcl::Graphics::TPenStyle' is not a pointer
C++
1
2
3
4
5
6
7
void Electron::Level(TCanvas *Canva)
{
  Canva->Pen->Color->clBlack;
  Canva->Pen->Style->psDot;
  Canva->Ellipse(200,200,300,300);
  Canva->Pen->Style->psClear;
}
Добавлено через 6 минут
Я не могу отредактировать это сообщение, но вообщем я был слеп и понял ошибку, извините
0
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 28
09.06.2019, 13:06  [ТС]
Осталось организовать поиск по файлу, где будут храниться данные об элементе, используя его номер в таблице или же название, каким образом это осуществить будет удобнее?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.06.2019, 14:30
Для анимации картинками есть компонент TAnimate.

В остальном что бы что-то более или менее качественно сделать лучше использовать OpenGL / DirectX

Добавлено через 1 минуту
Цитата Сообщение от vladi4ka Посмотреть сообщение
Скачала книгу, в "разделе графика и мультимедиа" есть объяснения про анимацию, но там рассказывается и приводится пример про создание анимации по точкам координат, мне не нужно такое сложное исполнение.
Если для Вас сложно рисовать по точкам, то уж не знаю ... может за программирование не стоит браться вообще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2019, 14:30
Помогаю со студенческими работами здесь

Работа с TImage
Ребят,есть вот такие,например, строчки: Image1_1-&gt;Picture-&gt;LoadFromFile(&quot;..\\..\\models\\dot\\dot.bmp&quot;); ...

Рисунок в Timage
Здравствуйте. Суть в том, что создаются динамически Timage, сколько задает пользователь. При нажатии image должен заполнятся картинкой в...

TImage и AutoSize
Загружаю картинку в Image2 таким способом c заранее заданными координатами void __fastcall TEdit_Form::Button3Click(TObject...

Кнопка из TImage
Сделал кнопку из TImage. При нажатии картинка меняется. Но назад при отпускании не могу вернуть. 2 дня мучаюсь. Подскажите кто знает.

TImage в C++ Builder
Начинаю работу с изображениями в C++ Builder. Требуется сделать поворот, масштабирование и т.д. Не подскажете литературу попроще по работе...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru