Змінюй хід війни! Допомагай ЗСУ!

Вопросы по C шарп

🔴 15:58 Повітряна тривога в Харків.обл.
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #41
Я самописец делаю себе.
Можно в GDI рисовать кривую, но он тупой, если данніе валятся больше 30 - 100 отрезков в секунду - буфер сериал-порта начинает переполняться, не успевает отрисовывать.
OpenGL таких проблем не имеет и рисует, сука, бістро.
Или если есть проще варианты - давай советуй. Мне надо до 10000 Б/с валить в кривую и выводить. Это, к стати, не много. Если в окне 512 точек, то 10к вертексов в сек - это всего 20Гц обновление. Даже меньше.

Да хз, директикс попробуй.
Хотя и опенгл должен ок работать, у тебя там явно хуйня какая-то, надо дебаггером смотреть
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #42
Хочешь чтобы посоветовали что-то умное - показывай весь код
Это как-то странно, учитывая то, что вопрос о том как сократить код и куски кода уже показывал.

Есть вот это и подобное этому:
Код:
            buttonRow1Col1.UseVisualStyleBackColor = row1Col1vis;
            buttonRow1Col2.UseVisualStyleBackColor = row1Col2vis;
            buttonRow2Col1.UseVisualStyleBackColor = row2Col1vis;
            buttonRow2Col2.UseVisualStyleBackColor = row2Col2vis;
            buttonRow3Col1.UseVisualStyleBackColor = row3Col1vis;
            buttonRow3Col2.UseVisualStyleBackColor = row3Col2vis;
            buttonRow4Col1.UseVisualStyleBackColor = row4Col1vis;
            buttonRow4Col2.UseVisualStyleBackColor = row4Col2vis;

Нужно перезаписать более сокращенно. Перегнав все кнопки в список или в массив уже получается вместо любого количества однотипного действия все умещается в три строки. Есть ли какие-либо еще способы?

Ангуляр-реакт нужен, и питон/нод на бекенде.

Как это все относится к шарпу?

Что-то мне подсказывает что мой старт был еще когда ты в школу не пошел

Возможно, но я бы так не радовался своим возрастом, если бы был на твоем месте, ибо тебе получается около 60 и, скорее всего, питюлька используется только при участии таблеток. :D

Саппорт, фубля, это считай за еду штаны протирать.

Не всем же директорами работать. :незнаю:
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #43
Почему оба?
Если речь о "меньше кода", как заявлено изначально - то лучше не создавать массив. Контролы и так доступны по форме, и самый короткий в написании способ - находить их через is и делать что-то пакетно с "только кнопками", "только текстБоксами" и т.д.
Варик, к стати, нубоклассический.

Ті мне лучше скажи что у меня за бред с тао. фриглют.

Рисую отрезки
Код:
        void drawLine(int x1,int y1,int x2,int y2)
        {

            Gl.glLineWidth(3);
            Gl.glColor3f(0.7f, 1f, 0.6f);
            Gl.glBegin(Gl.GL_LINE_STRIP);
            Gl.glVertex2d(x1, y1);
            Gl.glVertex2d(x2, y2);
            Gl.glEnd();

        }
рисует норм, всё нормально.
Чтобы передавать данные в обычном виде и рисовать понормальному - надо перевернуть ось Y, так как в опенЖэЛе координата 0,0 - верхний левый угол и график рисуерся зеркально.

Делаем поправку
Код:
        void drawLine(int x1,int y1,int x2,int y2)
        {
           int y1m=(oscScreen.Height/2)-y1;
           int y2m=(oscScreen.Height/2)-y2;
            Gl.glLineWidth(3);
            Gl.glColor3f(0.7f, 1f, 0.6f);
            Gl.glBegin(Gl.GL_LINE_STRIP);
            Gl.glVertex2d(x1, y1m);
            Gl.glVertex2d(x2, y2m);
            Gl.glEnd();

        }

всё норм. График съехал на средину и рисуется нормально относительно средины окна, +y вверх, -y вниз.

Теперь надо внести оффсет. И, вот, если сделать
Gl.glVertex2d(x1, (y1m+offset)); - всё пизда, куда б я не вносил оффсет и где бы его не брал - рисует где сам захотел, и изменение оффсета программно не работает. Со скроллбара завожу по изменению скроллбар.валуе изменять - не меняется, стоит на месте график. Хотя писать текстом - пишет, и значение меняется.

У тебя тут походу с транкейтом проблемы. Почему Y-координаты объявлены как интовые, а вертексные функции используются для дабла?
Какой размер вьюпорта? Если рисуешь на плоскости в ортогонали, и размер вьюпорта равен области вывода (судя по int y1m=(oscScreen.Height/2)-y1 так и есть), надо целочисленный сабсет юзать.
Походу, где-то там, где происходит суммирование начальной координаты и оффсета, что-то не к тому, к чему нужно приводится и происходит транкейт значения.
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #44
Мне надо до 10000 Б/с валить в кривую и выводить.
Тогда почему не вертекс буферы а вот это glBegin/glEnd?
Я бы сделал что типа FIFO буфера, массив X,Y с длиной равной высоте вьюпорта, в него бы добавлял новое значение в конец, а значение в начале удалял (не скажу сходу как это максимально эффективно сделать на сях), и шейдер, который просто Y-координату подменял бы индексом вершины в массиве (или height - index для инверсии), и выводил бы через glDrawArrays. Ну и дергал перерисовку с нужной частотой. Как-то так.
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #45
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #46
У тебя тут походу с транкейтом проблемы. Почему Y-координаты объявлены как интовые, а вертексные функции используются для дабла?

Подсказка показывает, что там дабл аргументы нужны, но работает и так и так.
Там в другом проблема - в моём незнании опенжээля.
Он просто не рисует. Первый раз, при инициализации формы, рисуется всё, и сетка и кривая, а потом просто нет отрисовки.
P.S. Что такое вертекс буфера я не знаю, но, предполагаю, что та же самая функция с бегин-енд должна просто один раз выполняться.
Да, сейчас она вызывается для каждого отрезка, но это в целях познания вселенной.
Оно и так нихуя не рисует, если начнёт работать как есть - естественно я не буду вертексы кожен раз парами пихать между бегин-енд, а все запихаю и один раз начал-кончил. Но то если хоть один отрезок по Y за бегает.
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #48
Кучу хуйни, которой занимался еще 5 лет назад, уже забыл напрочь, а с ОГЛ еще что-то помню:D
Положил жиззь на какое-то ентерпрайз-говно, а ведь мог давно свой Doom написать:плачу:
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #49
Это как-то странно, учитывая то, что вопрос о том как сократить код и куски кода уже показывал.

Есть вот это и подобное этому:
Код:
            buttonRow1Col1.UseVisualStyleBackColor = row1Col1vis;
            buttonRow1Col2.UseVisualStyleBackColor = row1Col2vis;
            buttonRow2Col1.UseVisualStyleBackColor = row2Col1vis;
            buttonRow2Col2.UseVisualStyleBackColor = row2Col2vis;
            buttonRow3Col1.UseVisualStyleBackColor = row3Col1vis;
            buttonRow3Col2.UseVisualStyleBackColor = row3Col2vis;
            buttonRow4Col1.UseVisualStyleBackColor = row4Col1vis;
            buttonRow4Col2.UseVisualStyleBackColor = row4Col2vis;

Нужно перезаписать более сокращенно. Перегнав все кнопки в список или в массив уже получается вместо любого количества однотипного действия все умещается в три строки. Есть ли какие-либо еще способы?

Ну так тебе уже сказали что можно контролы перебирать

Код:
var c = from controls in this.Controls.OfType<Button>() select controls;


Как это все относится к шарпу?

Да так что ты преувеличиваешь необходимость шарпа.

Возможно, но я бы так не радовался своим возрастом, если бы был на твоем месте, ибо тебе получается около 60 и, скорее всего, питюлька используется только при участии таблеток. :D

Хуево у тебя с математикой.

Не всем же директорами работать. :незнаю:

Причем тут директора?
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #50
Ну так тебе уже сказали что можно контролы перебирать

Я уже и поблагодарил за это человека.

Да так что ты преувеличиваешь необходимость шарпа.

Под каждые задачи свой язык, с этим никто не спорит, но данная тема касается именно шарпа.

Причем тут директора?

Ну был же упрек на уровень зп и статуса.
 
  • 🔴 15:58 Повітряна тривога в Харків.обл.
  • #51
Назад
Зверху Знизу