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

Анимация Canvas,Timage

02.06.2019, 17:54. Показов 4589. Ответов 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
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
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
9923 / 6459 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru