Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
1

Нарисовать инь ян

04.06.2013, 20:08. Показов 4061. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно нарисовать инь ян(как на картинке) но у меня хрень какая то получается
подскажите как нарисовать.
Изображения
 
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2013, 20:08
Ответы с готовыми решениями:

Про инь, ян и хрень
Занимательная статья, которая имхо отражает нашу нынешнюю жизнь и то, кем мы все стали... Наш...

Реализация игры «Инь-Ян»
Доброго времени суток. Я делаю курсовой проект на Java и столкнулся с проблемой, но обо всём по...

Создать программу которая будет создавать финуру инь-янь
Создать программу которая будет создавать финуру инь-янь

Нарисовать флаг, нарисовать график y=ctg x Нарисовать анимацию
Дело таково у меня сейчас практика, где я очень не успиваю сделать все свои задания... Большая...

16
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.06.2013, 01:48 2
Grime, попробуйте обычные окружности, для центральной линии можно попробовать кривую Безье
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
05.06.2013, 05:44  [ТС] 3
не получается никак это в код реализовать,так то в роде понятно,а вот с кодом проблема.
0
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
05.06.2013, 08:34 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Два полукруга и четыре круга. Например, в случае Windows Forms:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
 
    var g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.FillPie(Brushes.White, new Rectangle(0, 0, 200, 200), -180, 180);
    g.FillPie(Brushes.Black, new Rectangle(0, 0, 200, 200), 0, 180);
    g.FillEllipse(Brushes.White, new Rectangle(100, 50, 100, 100));
    g.FillEllipse(Brushes.Black, new Rectangle(0, 50, 100, 100));
    g.FillEllipse(Brushes.White, new Rectangle(25, 75, 50, 50));
    g.FillEllipse(Brushes.Black, new Rectangle(125, 75, 50, 50));
}
1
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
05.06.2013, 20:14  [ТС] 5
а можно с комментариями?

Добавлено через 2 часа 17 минут
в общем код должен быть похож на этот в методе Show,только под данное условие.помогите,очень нужно.заранее спасибо.
C#
1
2
3
4
5
6
7
8
9
10
11
12
 public void Show()
        {
            cPen.Color = Color.Black;
            Graphics cGraphics = Graphics.FromImage(cPictureBox.Image);
            cGraphics.DrawEllipse(cPen, X, Y, Size-1, Size-1);//овал
            cBrush.Color = Color.Black;
            cGraphics.FillEllipse(cBrush, X + Size / 4-Size/20, Y + Size / 4, Size / 5, Size / 5);
            cGraphics.FillEllipse(cBrush, X + Size / 2+Size/10, Y + Size / 4, Size / 5, Size / 5);
            cGraphics.DrawEllipse(cPen, X + Size / 4-Size/20, Y + Size / 4, Size / 5, Size / 5);
            cGraphics.DrawEllipse(cPen, X + Size / 2 + Size / 10, Y + Size / 4, Size / 5, Size / 5);
            cPictureBox.Refresh();
            cGraphics.Dispose();
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.06.2013, 20:15 6
Grime, там с фокусом проблема, так и не разобрался, взял старый рабочий пример и с ним работал.
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
05.06.2013, 20:25  [ТС] 7
а если пример подобной задачи скину сможете помочь?мне просто надо внутреннюю фигуру нарисовать в методе Show и всё в принципе.мыслей вообще нету
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.06.2013, 20:32 8
Grime, за быдлокод не отвечаю:
Blink.rar
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
05.06.2013, 20:39  [ТС] 9
не так как надо
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.06.2013, 20:42 10
Это просто пример, вашу задачу он не рисует. Ну а если вы под себя поправить 3 строчки не можете...
0
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
05.06.2013, 20:52 11
Цитата Сообщение от Grime Посмотреть сообщение
а можно с комментариями?
Просто удалите свой PictureBox и вставьте этот код в класс главной формы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
 
    var g = e.Graphics;
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.FillPie(Brushes.White, new Rectangle(0, 0, 200, 200), -180, 180);
    g.FillPie(Brushes.Black, new Rectangle(0, 0, 200, 200), 0, 180);
    g.FillEllipse(Brushes.White, new Rectangle(100, 50, 100, 100));
    g.FillEllipse(Brushes.Black, new Rectangle(0, 50, 100, 100));
    g.FillEllipse(Brushes.White, new Rectangle(25, 75, 50, 50));
    g.FillEllipse(Brushes.Black, new Rectangle(125, 75, 50, 50));
}
Если что-то будет работать не так, то напишите что конкретно вас не устраивает или что конкретно непонятно.
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
06.06.2013, 07:49  [ТС] 12
вот что я сделал и что получилось.не силён я в графике.
Вложения
Тип файла: rar Задание 2.4.rar (48.1 Кб, 32 просмотров)
0
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
06.06.2013, 10:01 13
И что же вас не устраивает? Отображается все нормально, а про анимацию вы ничего не упоминали. Как именно должна выглядеть анимация?
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
06.06.2013, 10:22  [ТС] 14
начальное положение верх-центр поверхности рисования.движение по окружности против часовой стрелки.
0
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
06.06.2013, 10:55 15
Создайте новый проект и вставьте в код формы:
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
public partial class Form1 : Form
{
    private const int R = 50; // Радиус окружности
    private readonly Timer timer;
    private int angle = 270;
 
    public Form1()
    {
        InitializeComponent();
        DoubleBuffered = true;
        timer = new Timer();
        timer.Interval = 10;
        timer.Tick += TimerTick;
        timer.Start();
    }
 
    private void TimerTick(object sender, EventArgs e)
    {
        angle = (angle - 1) % 360;
        Invalidate();
    }        
 
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);            
 
        var x = (int)((ClientSize.Width / 2 - R) * (1 + Math.Cos(angle * Math.PI / 180)));
        var y = (int)((ClientSize.Height / 2 - R) * (1 + Math.Sin(angle * Math.PI / 180)));
 
        var g = e.Graphics;
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.FillPie(Brushes.White, new Rectangle(x, y, R * 2, R * 2), -180, 180);
        g.FillPie(Brushes.Black, new Rectangle(x, y, R * 2, R * 2), 0, 180);
        g.FillEllipse(Brushes.White, new Rectangle(x + R, y + R / 2, R, R));
        g.FillEllipse(Brushes.Black, new Rectangle(x, y + R / 2, R, R));
        g.FillEllipse(Brushes.White, new Rectangle(x + R / 4, y + R * 3 / 4, R / 2, R / 2));
        g.FillEllipse(Brushes.Black, new Rectangle(x + R * 5 / 4, y + R * 3 / 4, R / 2, R / 2));
    }
}
Без всяких PictureBox, Show, Hide и т.д. Сработал таймер - изменили значение угла, запросили перерисовку формы, а уже потом, когда будет вызвана функция рисования формы, выполняем все расчеты.

Следующее домашнее задание - сделать так чтобы инь-янь одновременно вращался и вокруг своей оси )
0
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 52
06.06.2013, 13:35  [ТС] 16
спасибо огромное)
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.06.2013, 16:14 17
Был бы wpf, обошлись бы стандартным RenderTransform
0
06.06.2013, 16:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2013, 16:14
Помогаю со студенческими работами здесь

Как gl_line_loop заполнить цветом или им же нарисовать нарисовать сферу
или же нарисовать примерно точно также как на изображении, и потом при диалоге изменения цвета...

Нарисовать трапецию, после чего нарисовать ее зеркальную копию (относительно диагонали 1го квадранта) и уменьшить
Собственно сделал так, только пока что без уменьшения, отзеркаленную копию рисует только 1 линию,...

Как нарисовать прямоугольник, изменить его координаты и нарисовать заново уже без первого прямоугольника?
Как нарисовать прямоугольник, изменить его координаты и нарисовать заного уже без первого...

Нарисовать лес на экране (нарисовать дерево, и размножить его на экране)
73. Нарисовать лес на экране (нарисовать дерево, и размножить его на экране)


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru