Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для Serber47
5 / 5 / 3
Регистрация: 12.06.2010
Сообщений: 13

Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D

30.01.2012, 12:39. Показов 3461. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С возможностью вращения в плоскостях, и возможностью закрашивания.
начал с того что начал писать каркасное изображение сферы:
C#
1
2
3
4
5
6
7
8
9
10
11
 private void Form1_Paint(object sender, PaintEventArgs e)
        {
            int R = 200;//радиус
            int k = 20; //некий коэффициент
            int X, Y;
            for (int B = -90; B <= 90; B += 20) // широта от -90 до 90
                for (int L = -180; L <= 180; L += 20)//долгота от 0 до 360, или от -180 до 180
                  {
                    int x = (int)(R * Math.Cos(B) * Math.Sin(L));
                    int y = (int)(R * Math.Cos(B) * Math.Cos(L));
                    int z = (int)(R *Math.Cos(B));
далее задача преобразовать координаты {x, y, z} в координаты на плоскость {X, Y}
пытаюсь так
C#
1
2
  X = (x / ((z / k) + 1)) +(int)(Width / 2);
                   Y = (y / ((z / k) + 1)) +(int)(Height / 2);
и дале рисование отрезка до точки {X, Y}то есть соединяем между собой соседние точки
а получившиеся грани из 4-ч точек закрашиваем

прекрасно понимаю что нарисовать в OpenGL или DirectX просто и легко, но вся фишка задать математически и ручками, китайский код писать не хочется прописывая просто множество DrawEllipse меняя координаты

сам вопрос как нарисовать эти самые отрезки, или как это всё собрать в некий массив
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2012, 12:39
Ответы с готовыми решениями:

"анимация" using System.Drawing.Drawing2D
Здавствуйте! Мало знакома с графикой c#, возникла необходимость сделать следующее: окно формы содержит несколько label'ов и кнопку OK,...

System.ArgumentException в System.Drawing.dll при работе с Gif
Необработанное исключение типа &quot;System.ArgumentException&quot; произошло в System.Drawing.dll using System; using...

Необработанное исключение типа "System.ArgumentException" в System.Drawing.dll
Доброго времени суток. Возникла проблема с загрузкой изображения из базы данных. Вот собственно код: ...

1
35 / 35 / 1
Регистрация: 14.01.2011
Сообщений: 111
30.01.2012, 13:31
в событии e есть graphics - это поверхность на которой ты будешь рисовать,
создаешь
C#
1
Pen p = new Pen(Color.white);
потом начальную и конечную точки:
C#
1
2
Point startPoint = new Point(x1,y1);
Point endPoint = new Point(x1,y1);

и рисуешь им линию

C#
1
e.graphics.drawline(p,startPoint ,endPoint );
не забудь почистить память
C#
1
p.Dispose();
так ты нарисуешь белую линию, это самое простое, но если хочешь рисовать одновременно много и быстро обьекты тогда используй
BufferedGraphics
прим:
C#
1
2
3
4
5
6
7
8
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            using (BufferedGraphics buffG = BufferedGraphicsManager.Current.Allocate(e.Graphics, e.ClipRectangle))            
            {
                //используй buffG.Graphics вместо e.Graphics
                buffG.Render(); 
            }
        }
но в данном случае тебе придется закрашивать всю оласть определенную в BufferedGraphicsManager.Current.Allocate (e.Graphics, e.ClipRectangle)
иначе буде черный фон
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2012, 13:31
Помогаю со студенческими работами здесь

System.Drawing
Есть обработка события: private void OnMouseMove(object sender, MouseEventArgs e) { if (paint) ...

Не подключается System.Drawing
вписал using System.Drawing; а мне ошибку: что я делаю не так?

System.Drawing.Font
В книжке Вотсона, Нейгела и прочих, дошёл до создания простого текстового редактора. И там есть такой код: private void...

Утилитарные типы System.Drawing
Добрый день! На экзамене есть билет: Утилитарные типы System.Drawing. Что можно рассказать в этом билете? Пытался найти информацию,...

Не меняется свойство System.Drawing.Point
Доброго всем вечера! Что за беда? есть класс PLine: public class PLine { System.Drawing.Point poi1, poi2;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru