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

Создать анимацию на форме

20.09.2015, 15:46. Показов 3953. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, знакомлюсь с графикой C# объясните пожалуйста ,приведите пример, знающие люди.
Пишу код для того ,чтобы сделать анимацию, но это все делаю непосредственно в Program.cs а не в одном классе Form1.
Приведите пример как в program.cs обращаться к методам и объектам формы и чтобы именно этот файл был исполняющим.
Вот еще пример кода.
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
namespace Test
{
    class Defender
    {
        public void DrawCircle(double x, double y, double R)
        {
        }
    }
 
    class Painter 
    {
        public void Drawing(PictureBox Picture_Box, PaintEventArgs e)
        {
            //Pen pen = new Pen(Brushes.Red);
            //Graphics circle = e.Graphics;
            SolidBrush Brush = new SolidBrush(Color.Red);
            Graphics circle = Picture_Box.CreateGraphics();
            System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(100, 100, 200, 200);
            circle.DrawEllipse(Pens.Black, rectangle);
        }
    }
    static class Program
    {
        static void Main()
        {
            Painter paint = new Painter();
            paint.Drawing();//по сути надо передать 2 аргумента как в методе, поэтому возникает ошибка, как этот момент исправить?
        }
    }
 
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2015, 15:46
Ответы с готовыми решениями:

Возможно ли рисовать анимацию в форме
Возможно ли рисовать анимацию в форме? Обязательно ли нужен net framework для написания программ на C#?

Воспроизвести gif анимацию на форме
есть задача к дню победы сделать танк который по нажатиям на клавиши стрелки вправо, влево передвигаеться (Сделал) а при нажатие...

Как сделать анимацию перемещения текста по форме (игровой автомат)?
Программа игровой автомат. При выйгрышной комбинации в лэйбел добавляются очки. Всё отлично. Но хочу сделать так. Допустим, я выйграл 500...

7
21 / 21 / 19
Регистрация: 22.03.2013
Сообщений: 115
20.09.2015, 23:31
на c++ можно было создавать все что нужно через winapi, здесь видимо тоже необходимо использовать winapi:
Draw on screen without form[stackoverflow]
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
21.09.2015, 09:00
Program.cs не трогайте. В форме переопределите OnPaint, и в нем рисуйте. Примеров на форуме полно.
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
29.09.2015, 21:49  [ТС]
Я это и так и так знал, у меня непосредственно интерес, как это сделать вне класса формы?
Вот к примеру я захотел создать отдельный класс который должен отвечать за рисование.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
29.09.2015, 22:10
Цитата Сообщение от llotall Посмотреть сообщение
как это сделать вне класса формы?
Вот к примеру я захотел создать отдельный класс который должен отвечать за рисование.
Нельзя рисовать "вообще". Рисовать нужно на чем-то.
Если вы хотите сделать отдельный класс для рисования - сделайте, и передавайте в его методы класс Graphics и на нем рисуйте. А вызывающий класс (форма или контрол) будет уже передавать в ваш класс свой Graphics на котором нужно рисовать.
1
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
30.09.2015, 01:09  [ТС]
Если вас это не затруднит, напишите какой-нибудь пример для демонстрации ваших слов

Добавлено через 3 минуты
Цитата Сообщение от Storm23 Посмотреть сообщение
Нельзя рисовать "вообще". Рисовать нужно на чем-то.
Я видимо вас не совсем понял,но ведь поверхность для рисования инициализирована
Цитата Сообщение от llotall Посмотреть сообщение
Graphics circle = Picture_Box.CreateGraphics();
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
30.09.2015, 09:31
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от llotall Посмотреть сообщение
Я видимо вас не совсем понял,но ведь поверхность для рисования инициализирована
1) Не используйте CreateGraphics. Вообще.
2) У вас нет создания Picture_Box. Где он?
3) Но даже если вы создадите Picture_Box, все равно он не будет отрисовываться, потому что он не лежит на форме(окне). Windows рисует только в окнах. Она потому и называется Windows.
4) Но даже если вы создадите форму(окно), кинете туда пикчербокс, то все равно работать не будет. Потому что для того, что бы окно нормально работало, нужно создать очередь сообщений, через которые windows дает окнам команды (в т.ч. и на отрисовку).
5) Т.о. вам еще нужно создать очередь сообщений.
6) Так вот все что перечислено выше, студия делает за вас сама - просто нужно создать WinForm приложение, вместо консольного. Там будет и очередь сообщений, и главное окно.

А затем:
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
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication312
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            //созаем объект Drawer
            var drawer = new Drawer();
            //вызываем у него метод Draw, передавая туда свой Graphics
            drawer.Draw(e.Graphics);
        }
    }
 
    /// <summary>
    /// Отрисовщик
    /// </summary>
    public class Drawer
    {
        public void Draw(Graphics gr)
        {
            for (int i = 0; i < 10; i++)
                gr.FillRectangle(Brushes.Red, i*10, i*10, 10, 10);
        }
    }
}
Класс Drawer реализует отрисовку независимо от формы. Вы можете его использовать в форме, а можете использовать для отрисовки на произвольном контроле. А можете вообще вынести в отдельный проект (длл).
1
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
05.10.2015, 19:24  [ТС]
Большое вам спасибо!!!)Все запилил ))Очень крутой форум и крутые люди которые помогают))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2015, 19:24
Помогаю со студенческими работами здесь

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

Как эффективно создать анимацию на форме
Сейчас делаю это обычным способом: сначала закрашиваю прямоугольником старый рисунок, а затем рисую сверху новый. Так я делал в С++...

Создать анимацию на форме в виде распускающегося цветка
Подскажите способы решения это задачки. Добавлено через 7 минут Я так понял, нужно иметь несколько картинок с разными состояниями...

Отобразить на форме анимацию графика циклоиды
Построить циклоиду на форме в Builder С ++. уравнения X=r*t-r*sin(t), y=r-r*cos(t)/ вот как она должна двигаться. Помогите...

Кому приходилось реализовывать FLASH анимацию в форме
загрузил activeX воткнул в форму установил свойство movie запустин на выполнение неработает где грабли?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru