0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 12

Вращение колеса вокруг своей оси

12.04.2017, 15:46. Показов 8370. Ответов 15

Студворк — интернет-сервис помощи студентам
Помогите. Я уже запарилась. В общем, мне нужно что бы колесо со спицами двигалось по осе X и вращалось ВОКРУГ СВОЕЙ ОСИ и никуда не улетало, ни вверх ни вниз. Как это сделать? Что в коде поменять и на что обратить внимание?

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
 
namespace zad_velos
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int x;
        float angle;
        private double x2, y2;
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            x++;
            //для поворота спиц
            angle += 1F;
 
            //для колеса
            x2 += 0.1;
            y2 += 0.1;
            Invalidate();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Graphics g1 = e.Graphics;
            g.SmoothingMode = SmoothingMode.HighQuality;
            Pen pen1 = new Pen(Color.Black, 3);
            Pen pen2 = new Pen(Color.DimGray, 4);
            Pen pen3 = new Pen(Color.Black, 2);
 
            //полигон спицы           
            Point[] p = new Point[16];
            p[0] = new Point(x + 175, 151);
            p[1] = new Point(x + 175, 174);
 
            p[2] = new Point(x + 155, 151);
            p[3] = new Point(x + 175, 174);
 
            p[4] = new Point(x + 151, 174);
            p[5] = new Point(x + 175, 174);
 
            p[6] = new Point(x + 175, 200);
            p[7] = new Point(x + 175, 174);
 
            p[8] = new Point(x + 194, 200);
            p[9] = new Point(x + 175, 174);
 
            p[10] = new Point(x + 157, 198);
            p[11] = new Point(x + 175, 174);
 
            p[12] = new Point(x + 200, 174);
            p[13] = new Point(x + 175, 174);
 
            p[14] = new Point(x + 194, 151);
            p[15] = new Point(x + 175, 174);
 
            // Создаем новую матрицу преобразования:
            Matrix m = new Matrix();
            m.Translate(0, 0);
            m.RotateAt(angle, new PointF(174, 175));
            g1.Transform = m;
 
            g1.DrawPolygon(pen3, p);
            //колесо
            g.DrawEllipse(pen1, x + 150, 150, 50, 50);
            g.DrawEllipse(pen1, x + 145, 145, 60, 60);
            g.DrawEllipse(pen2, x + 148, 148, 54, 54);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2017, 15:46
Ответы с готовыми решениями:

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

Вращение букв вокруг оси
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Вращение фигуры вокруг произвольной оси
Приветствую! Подскажите формулу для вращения. К примеру есть квадрат или любой другой объект, который нужно повернуть вокруг своей оси...

15
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
12.04.2017, 17:21
Существенная ошибка в коде это:
C#
1
2
Graphics g = e.Graphics;
Graphics g1 = e.Graphics;
потому, что нужно не забывать, что e.Graphics - класс, и при присваивании одному объекту класса другой объект приводит не к созданию идентичного нового объекта другому объекту, а только создаёт ссылку на данные которые хранятся во втором объекте (e.Graphics), а в данном случае второй объект один и тот же. Поэтому при "кручении" g1 крутиться и e.Graphics, поскольку e.Graphics меняется через g1. Соответственно, и через завязку меняется и g (то есть, крутиться и то что выводит g - шина от колеса)

Я по первой же мысли сделал так:
C#
1
2
Graphics g = this.CreateGraphics(); // или Graphics g = Graphics.FromHwnd(this.Handle);
Graphics g1 = e.Graphics;
CreateGraphics() или Graphics.FromHwnd(this.Handle) можно применить и к g1, но ефект всё одно не утешающий. В первом случае будет мигать колесо, а во втором - спицы.

Вобщем, нужно придумать как создавать отдельные (независимые) объекты Graphics, чтобы можно было отдельно работать и ничего не мигало. Честно говоря на данный момент я не знаю как так сделать чтобы убрать мигание (DoubleBuffered только делает хуже в моём последнем примере кода).
0
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 12
12.04.2017, 17:40  [ТС]
Да уж, мечта эпилептика вышла) и с DoubleBuffered это вообще бомба. У меня есть пример работы, которую дал преподаватель, и там полигон поворачивается на любую желанную величину угла по нажатию кнопки. Может это как то поможет вам помочь мне
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
 
namespace z1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.BackColor = Color.White;
            // Подписка на обработчик события рисования в drawingPanel:
            
            panel1.Paint += new PaintEventHandler(panel1Paint);
        }
        private void panel1Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            DrawAxes(g);
            //rbTranslation.Checked = false;
            ApplyTransformation(g);
        }
        private void ApplyTransformation(Graphics g)
        {
            // Создаем новую матрицу преобразования:
            Matrix m = new Matrix();
            // Приводим начало в центр:
            m.Translate(panel1.Width / 2, panel1.Height / 2);
            if (rbTranslation.Checked)
            {
                // Translation:
                int dx = Convert.ToInt16(tbTranslationX.Text);
                int dy = -Convert.ToInt16(tbTranslationY.Text);
                m.Translate(dx, dy);
            }
            else if (rbScale.Checked)
            {
                // Scaling:
                float sx = Convert.ToSingle(tbScaleX.Text);
                float sy = Convert.ToSingle(tbScaleY.Text);
                m.Scale(sx, sy);
            }
            else if (rbRotation.Checked)
            {
                // Rotation:
                float angle = Convert.ToSingle(tbRotaionAngle.Text);
                float x = Convert.ToSingle(tbRotateAtX.Text);
                float y = -Convert.ToSingle(tbRotateAtY.Text);
                g.FillEllipse(Brushes.Black, x - 4, y - 4, 8, 8);
                m.RotateAt(angle, new PointF(x, y));
            }
            else if (rbShear.Checked)
            {
                // Shear:
                float alpha = Convert.ToSingle(tbShearX.Text);
                float beta = Convert.ToSingle(tbShearY.Text);
                m.Shear(alpha, beta);
            }
            g.Transform = m;
            DrawHouse(g, Color.Black);
        }
        private void DrawHouse(Graphics g, Color color)
        {
            HatchBrush hb = new HatchBrush(HatchStyle.HorizontalBrick, color, Color.White);
            Pen aPen = new Pen(color, 2);
            Point[] pta = new Point[5];
            pta[0] = new Point(-40, 40);
            pta[1] = new Point(40, 40);
            pta[2] = new Point(40, -40);
            pta[3] = new Point(0, -80);
            pta[4] = new Point(-40, -40);
            g.FillPolygon(hb, pta);
            g.DrawPolygon(aPen, pta);
            hb.Dispose();
            aPen.Dispose();
        }
        private void DrawAxes(Graphics g)
        {
            Matrix m = new Matrix();
            // определяем матрицу преобразований
            m.Translate(panel1.Width / 2, panel1.Height / 2);
            // Применяем матрицу преобразования к графическому объекту:
            g.Transform = m;
            // Рисуем оси x и y:
            g.DrawLine(Pens.Blue, -panel1.Width / 2, 0,panel1.Width / 2, 0);
            g.DrawLine(Pens.Blue, 0, -panel1.Height / 2,0, panel1.Height / 2);
            // Добавляем метки к осям X и Y:
            g.DrawString("X", this.Font, Brushes.Blue, panel1.Width / 2 - 20, -20);
            g.DrawString("Y", this.Font, Brushes.Blue, 5, -panel1.Height / 2 + 5);
            // Рисуем деления:
            int tick = 40;
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Far;
            for (int i = -200; i <= 200; i += tick)
            {
                g.DrawLine(Pens.Blue, i, -3, i, 3);
                g.DrawLine(Pens.Blue, -3, i, 3, i);
                SizeF sizeXTick = g.MeasureString(i.ToString(),
                this.Font);
                if (i != 0)
                {
                    g.DrawString(i.ToString(), this.Font, Brushes.Blue,
                    i + sizeXTick.Width / 2, 4f, sf);
                    g.DrawString((-i).ToString(), this.Font, Brushes.Blue,
                    -3f, i - sizeXTick.Height / 2, sf);
                }
                else
                {
                    g.DrawString("0", this.Font, Brushes.Blue,
                    new PointF(i - sizeXTick.Width / 3, 4f), sf);
                }
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            // Reset parameters to default values:
            tbTranslationX.Text = "0";
            tbTranslationY.Text = "0";
            tbScaleX.Text = "1";
            tbScaleY.Text = "1";
            tbRotaionAngle.Text = "0";
            tbRotateAtX.Text = "0";
            tbRotateAtY.Text = "0";
            tbShearX.Text = "0";
            tbShearY.Text = "0";
            panelbm.Invalidate();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            panel1.Invalidate();
        }
    }
    }
0
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
12.04.2017, 18:10
Oblya, не пойму, что вы собственно хотите? и прошу поэлегантней писать (без - );
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10421 / 5151 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.04.2017, 18:37
Лучший ответ Сообщение было отмечено Obya как решение

Решение

Цитата Сообщение от Oblya Посмотреть сообщение
нужно что бы колесо со спицами двигалось по осе X и вращалось ВОКРУГ СВОЕЙ ОСИ и никуда не улетало
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
    public partial class Form1 : Form
    {
        int x;
        float angle;
 
        public Form1()
        {
            InitializeComponent();
 
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
        }
 
        void DrawWheel(Graphics gr)
        {
            gr.SmoothingMode = SmoothingMode.HighQuality;
            //радиус колеса
            var r = 25;
            //спицы
            using(var pen = new Pen(Color.Black, 2))
            for(int a = 0; a < 360; a+=45)
            {
                gr.DrawLine(pen, 0, 0, r, 0);
                gr.RotateTransform(45);
            }
            //шина
            using (var pen1 = new Pen(Color.Black, 3))
            using (var pen2 = new Pen(Color.DimGray, 8))
            {
                gr.DrawEllipse(pen2, -r + 5, -r + 5, r * 2 - 10, r * 2 - 10);
                gr.DrawEllipse(pen1, -r, -r, r * 2, r * 2);
                gr.DrawEllipse(pen1, -r + 10, -r + 10, r * 2 - 20, r * 2 - 20);
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            //для поворота спиц
            angle += 5f;
            //для колеса
            x += 3;
            //
            Invalidate();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            var gr = e.Graphics;
            //переносим центр координат
            var y = 200;
            gr.TranslateTransform(x, y);
            //вращаем
            gr.RotateTransform(angle);
            //рисуем колесо
            DrawWheel(gr);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }
    }
3
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
12.04.2017, 18:53
Storm23, классно конечно Вы нашли метод решения проблемы))) Если я правильно понял код, то: Вы, я вижу, решили всё крутить: и шину колеса, и спицы (если не так понял скажите). Но всё же хотелось бы ради интереса крутить, например, только спицы, а не всё картинку вместе с шиной колеса. Ведь могут и такие случаи быть.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10421 / 5151 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.04.2017, 19:30
Цитата Сообщение от protectedman Посмотреть сообщение
крутить, например, только спицы
Ну можно крутить и только спицы, какая проблема?
После отрисовки спиц, можно вызвать метод Grphics.ResetTransform - он сбрасывает предыдущие преобразования. Затем делайте новые преобразования и рисуйте другие части.
1
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
12.04.2017, 20:48
Кстати, Storm23, я не понял для чего Вы создаёте Pen в using? Без using работать будет плохо или что?
0
 Аватар для aleksskay4
71 / 68 / 46
Регистрация: 02.12.2015
Сообщений: 891
Записей в блоге: 1
12.04.2017, 21:08
Цитата Сообщение от protectedman Посмотреть сообщение
Без using работать будет плохо или что?
Наверно, для освобождения памяти занятой объектом.
0
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
12.04.2017, 21:19
Цитата Сообщение от aleksskay4 Посмотреть сообщение
Наверно, для освобождения памяти занятой объектом.
ну это само собой разумеется)) но для чего освобождать в данном случае память, если сборщик мусора "уберёт мусор"))
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10421 / 5151 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
12.04.2017, 22:38
Цитата Сообщение от protectedman Посмотреть сообщение
я не понял для чего Вы создаёте Pen в using? Без using работать будет плохо или что?
Цитата Сообщение от protectedman Посмотреть сообщение
сборщик мусора "уберёт мусор"
1) Если объект реализует IDisposable то для него всегда нужно вызывать Dispose (либо явно либо через using). Это вообще не обсуждается. Потому что разработчик класса сделал Dispose не просто так и пока вы его не вызвали, объект будет держать ресурсы. Сборщик мусора срабатывает в неопределенные моменты времени, а может и вообще не сработать до завершения приложения, поэтому на него полагаться нельзя. Кроме того, объект может не вызывать Disopose в финализаторе, в результате чего неуправляемые ресурсы так и останутся висеть в памяти, даже после сборки мусора.
2) Особенно важно вызывать Dispose для графических примитивов (типа Brush, Pen, Graphics, Bitmap) - все эти объекты очень тяжелые, а перерисовка происходит очень часто. В результате, если не вызывать Disopse - возникает перерасход памяти, иногда даже с выпадением в OutOfMemoryException (а для 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
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication367
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Application.Idle += (o,O)=>Invalidate();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                using(var pen = new Pen(Color.Teal, 3))
                    e.Graphics.DrawRectangle(pen, 0, 0, 10, 10);
            }
        }
    }
}
Здесь создается объект Pen и сразу после использования - диспозится с помощью using.
Запустим и посмотрим на используемую память процесса:

Как видим, расход памяти - около 8 мб.

А теперь уберем using и будем создавать Pen без Dispose:
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
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication367
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Application.Idle += (o,O)=>Invalidate();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                var pen = new Pen(Color.Teal, 3);
                e.Graphics.DrawRectangle(pen, 0, 0, 10, 10);
            }
        }
    }
}
Смотрим память:

Почти 40 мб!
Причем если понаблюдать за расходом памяти, то видно, что в первом случае память ведет себя стабильно на уровне 8 мб. Во втором же случае память постоянно растет, потом дойдя до какого-то момента - чуть падает (это срабатывает сборщик мусора, который вызывает финализатор и диспоз), и потом опять начинает расти.
5
 Аватар для protectedman
10 / 10 / 4
Регистрация: 05.07.2016
Сообщений: 51
13.04.2017, 16:34
Strom23, с using я понял, но вот уже если дело на то пошло, то будьте добры, откройте нам секрет, для чего Вы используете var вместо типа который нужно использовать? Может и тут какая нибудь хитрость есть?))

И, кстати, в данном случае, можно было бы вообще не использовать ни каких using, а просто один раз создать Pen вне циклов))
0
 Аватар для ViterAlex
8948 / 4860 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.04.2017, 16:49
Цитата Сообщение от protectedman Посмотреть сообщение
для чего Вы используете var вместо типа который нужно использовать?
это удобно.

Добавлено через 2 минуты
Цитата Сообщение от protectedman Посмотреть сообщение
вообще не использовать ни каких using, а просто один раз создать Pen вне циклов))
Разве что вот так. А если объявлять как поле или свойство, то класс должен будет реализовать IDisposable
C#
1
2
3
4
5
using(var pen = new Pen(Color.Teal, 3))
    for (int i = 0; i < 100; i++)
    {
            e.Graphics.DrawRectangle(pen, 0, 0, 10, 10);
    }
2
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10421 / 5151 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.04.2017, 18:02
Цитата Сообщение от protectedman Посмотреть сообщение
с using я понял, но вот уже если дело на то пошло, то будьте добры, откройте нам секрет, для чего Вы используете var вместо типа который нужно использовать? Может и тут какая нибудь хитрость есть?))
Нет тут никакой хитрости. Как уже отметили, это просто удобно, лаконично и код выглядит ровнее.
Цитата Сообщение от protectedman Посмотреть сообщение
И, кстати, в данном случае, можно было бы вообще не использовать ни каких using, а просто один раз создать Pen вне циклов))
Да, конечно, я это сделал лишь для демки, что бы был виден расход памяти. Но и в реальности, создание сотен Pen в каждом кадре - вполне возможно, если графика достаточно сложная.

Добавлено через 3 минуты
ViterAlex, а я вообще делаю вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public static class GraphicsHelper
    {
        static Pen pen = new System.Drawing.Pen(Color.Bisque);
        static SolidBrush brush = new System.Drawing.SolidBrush(Color.Bisque);
 
        public static Pen Pen(this Color color, float width = 1f)
        {
            pen.Color = color;
            pen.Width = width;
            return pen;
        }
 
        public static SolidBrush Brush(this Color color)
        {
            brush.Color = color;
            return brush;
        }
    }
И тогда просто:
C#
1
2
    for (int i = 0; i < 100; i++)
        e.Graphics.DrawRectangle(Color.Teal.Pen(), 0, 0, 10, 10);
1
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 12
15.04.2017, 12:15  [ТС]
Storm23 - человечище! Просто громадное тебе спасибо и низкий поклон! Код короче моего, понятнее, да еще и рабочий, всех благ!
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 2
17.05.2017, 04:47
Как при таком способе( вращении всей формы) сделать 2 движущихся вдоль одной оси, вращающихся колеса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2017, 04:47
Помогаю со студенческими работами здесь

Вращение фигуры вокруг центра оси
Имеется след. класс фигуры: class Model { /// &lt;summary&gt; /// Массив рёбер /// &lt;/summary&gt; ...

Как заставить крутиться по часовой стрелке вокруг своей оси картинку?
Есть пикчер бокс с картинкой, как заставить крутиться по часовой стрелке вокруг своей оси картинку ?

Реализовать вращение колеса с разноцветными спицами
Ребята спасайте, есть задание: lab№ 7. Колесо с шестью разноцветными спицами вращается 25 сек с дискретом 0.5 сек, поворачиваясь на...

Вращение фигуры вокруг точки
Есть точка и есть набор фигур, расположенных вокруг этой точки. Как вращать эти фигуры против часовой стрелки вокруг этой точки? ...

Вращение одной сферы вокруг другой
Здравствуйте, тему для курсовой выбрал &quot;моделирование атома&quot;. Пользоваться библиотеками нельзя, только попиксельно вырисовывать. ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru