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

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

28.10.2014, 13:25. Показов 2298. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно нарисовать барана. Делаю все как в методичке. Но не работает. Код без ошибок, но при запуске баран не рисуется( помогите разобраться


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
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;
 
namespace WindowsFormsApplication1
{  
    public partial class Form3 : Form
    {
        float x0 = 230;//Абсцисса начальной точки
        float y0 = 180;//Ордината начальглй точки
        float t = 0;//Для последующей анимации
 
        public Form3()
        {
            InitializeComponent();
        }
 
        void DrawSheep(Graphics g, float x0, float y0, float t)
        {
            Pen p1 = new Pen(Color.Blue, 2); // заготавливаем карандаши и кистьи
            Pen p2 = new Pen(Color.Red, 3); // для рисования барана
            Pen p3 = new Pen(Color.Gray, 4);
            Pen p4 = new Pen(Color.Black, 3);
            SolidBrush b1 = new SolidBrush(Color.Green);
            g.FillEllipse(b1, x0, y0, 100, 50); // туловище
            float xhead = x0 + 60; // вычисляем координаты головы
            float yhead = y0 - 20;
            g.DrawPolygon(p1, new PointF[] { new PointF(xhead, yhead), new PointF(xhead + 30, yhead + 30), new PointF(xhead + 60, yhead) });
            // рисуем голову
            g.DrawEllipse(p2, x0 + 80, y0 - 12, 5, 5); // рисуем глаза
            g.DrawEllipse(p2, x0 + 95, y0 - 12, 5, 5);
            g.DrawArc(p3, x0 + 20, y0 - 45, 50, 50, 0, -90); // рисуем рога
            g.DrawArc(p3, x0 + 60, y0 - 45, 50, 50, 0, -90);
            float xlegs = x0 + 10; // вычисляем координаты ног
            float ylegs = y0 + 42; // и рисуем четыре ноги
            g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });
            xlegs = xlegs + 20;
            g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });
            xlegs = xlegs + 40;
            g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });
            xlegs = xlegs + 20;
            g.DrawLines(p4, new PointF[] { new PointF(xlegs, ylegs), new PointF(xlegs + 20 * (1 - t), ylegs + 20), new PointF(xlegs, ylegs + 40) });
            g.DrawArc(p4, x0 - 25, y0 + 12, 25, 25, 0, 245);
        }
 
        private void Form3_Paint(object sender, PaintEventArgs e)
        { 
            Graphics g = e.Graphics; // Описать поверхность рисования
            DrawSheep(g, x0, y0, t);
        }
 
        public void Form3_Load(object sender, EventArgs e)
        {
            
        }
    }
    
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2014, 13:25
Ответы с готовыми решениями:

Создать игру, где будут 2-3 барана и волк
Короче, нужна помощь, как реализовать вот это: "Создать игру, где будут 2-3 барана и волк. При...

Приватный конструктор и стандартный контейнер. Два барана на мосту
Всем суп! Итак, банальная вещь - в заголовке - не желает компилироваться. Суть, немного...

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

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

19
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:30 2
замени
C#
1
2
            Graphics g = e.Graphics; // Описать поверхность рисования
            DrawSheep(g, x0, y0, t);
на
C#
1
DrawSheep(e.Graphics, x0, y0, t);
Добавлено через 33 секунды
странный какой то баран
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:33  [ТС] 3
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
странный какой то баран
ну какой есть) должен быть таким
Миниатюры
Нарисовать барана  
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:35  [ТС] 4
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
замени
заменила. все равно не рисуется(

C#
1
2
3
4
private void Form3_Paint(object sender, PaintEventArgs e)
        {
            DrawSheep(e.Graphics, x0, y0, t);
        }
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:37 5
лови мой проект
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:40  [ТС] 6
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
лови мой проект
где ловить?
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:41 7
секунду, не тот отправил
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:41 8
Лучший ответ Сообщение было отмечено POVT как решение

Решение

вот
Вложения
Тип файла: zip bb.zip (39.1 Кб, 19 просмотров)
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:42 9
а в чем здесь анимация?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:43  [ТС] 10
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
а в чем здесь анимация?
ну там надо нарисовать барана потом его двигаться заставить. А я его даже нарисовать не могу) Не верно тему назвала
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:44 11
как двигаться должен просто по прямой или чтобы еще и ноги двигались?
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:45  [ТС] 12
Baky, просто по прямой
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:52 13
сейчас делается

Добавлено через 2 минуты
замени вот это:
C#
1
2
3
4
private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawSheep(e.Graphics, x0, y0, t);
        }
на это
C#
1
2
3
4
5
6
7
8
9
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawSheep(e.Graphics, x0, y0, t);
            if (x0 < 500)
                x0+=0.4f;
            else
                x0 = 130;
            Invalidate();
        }
Добавлено через 1 минуту
и-и-и чуть не забыл... замени:
C#
1
2
3
4
        public Form1()
        {
            InitializeComponent();
        }
на
C#
1
2
3
4
5
6
7
8
        public Form1()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.AllPaintingInWmPaint |
              ControlStyles.UserPaint |
              ControlStyles.OptimizedDoubleBuffer |
              ControlStyles.ResizeRedraw, true);
        }
Добавлено через 15 секунд
эт что бы мерцания небыло
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 13:57  [ТС] 14
Baky, спасибо за проект. Твой работает. Я копирую код твой в свой проект , правлю наименования, а у меня ошибки(
Ошибка 1 Пространство имен не может непосредственно содержать такие члены, как поля или методы C:\Users\Администратор\Desktop\Приложение1\Приложение1\WindowsFormsApplication1\ WindowsFormsApplication1\Form3.cs 12 5 WindowsFormsApplication1

Ошибка 2 Элемент "obj\x86\Debug\WindowsFormsApplication1.Form3.resources" указан в параметре "Resources" более одного раза. Дублированные элементы не поддерживаются параметром "Resources". WindowsFormsApplication1

прикрепляю проект. форма 3 находится в окна-> цыпленок (потом просто этого барана в цыпленка перересую)

Приложение1.rar
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 13:59 15
поступим проще, брось свой проект и я его уже исправлю

Добавлено через 33 секунды
а ты его уже бросил
0
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 14:00  [ТС] 16
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
поступим проще, брось свой проект и я его уже исправлю
Цитата Сообщение от POVT Посмотреть сообщение
прикрепляю проект. форма 3 находится в окна-> цыпленок (потом просто этого барана в цыпленка перересую)
Приложение1.rar
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 14:05 17
я понял в чем у тебя косяк не рисует из за того что метод не подключен к событию
Вложения
Тип файла: zip ~Приложение1~.zip (108.9 Кб, 12 просмотров)
1
1 / 1 / 0
Регистрация: 10.07.2014
Сообщений: 240
28.10.2014, 14:13  [ТС] 18
Baky,
Цитата Сообщение от Baky Посмотреть сообщение
я понял в чем у тебя косяк не рисует из за того что метод не подключен к событию
а где он подключается?

спасибо большое. А как сделать чтобы этот баран ехал помедленнее?

Добавлено через 2 минуты
Baky, разобралась. вот тут замедлить, ну по крайней мере, я так понял

C#
1
 x0 += 0.2f;
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 14:13 19
Цитата Сообщение от Baky Посмотреть сообщение
if (x0 < 500)
* * * * * * * * x0+=0.4f;
* * * * * * else
* * * * * * * * x0 = 130;
вот здесь вместо 0.4f; поставь 0.2f или 0.1f
1
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
28.10.2014, 14:18 20
Цитата Сообщение от POVT Посмотреть сообщение
а где он подключается?
открой форму в конструктаре и перейди к свойствам переключись на события и найди слово Paint. Далее нажми кнопку справа и выбери Form3_Paint
Миниатюры
Нарисовать барана  
1
28.10.2014, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 14:18
Помогаю со студенческими работами здесь

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

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

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

Нарисовать y=x3-7
Нарисовать y=x3-7.

Нарисовать
Помогите пожалуйста это нарисовать

Нарисовать Чебурашку
Нужно нарисовать с помощью графических примитивов предложенную картинку, разукрасить. И создать...


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

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