Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2014, 13:56   #1
cdman
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 32
По умолчанию Затруднение с методом класса, рисующим в секции paint

Добрый день!

У меня возникло затруднение с запихиванием метода в класс (Чтоб всё культурно было)
Вот набросок класса, всё по простому здесь... но e.Graphics.DrawImage нужно размещать в секции Paint. И что делать ?

Код:
public class PointAndFigure
    {
        Bitmap O_Image = new Bitmap(@"E:\\DEALs\\DEALs\\DEALs\\Resources\\O.bmp");
        Bitmap X_Image = new Bitmap(@"E:\\DEALs\\DEALs\\DEALs\\Resources\\X.bmp");
 
        public int SpriteSize;
        public int Begin_Y;
        private void PrintP(object G, string Symbol, int X, int Y)
        {
            //e.Graphics.DrawImage(O_Image, X * SpriteSize, Y * SpriteSize + Begin_Y);
        }
    }

private void Panel_Paint(object sender, PaintEventArgs e)
 {
    // Вот здесь нужно e.Graphics.DrawImage(O_Image, X * SpriteSize, Y * SpriteSize + Begin_Y);
 }
Это просто метод в классе, который должен рисовать спрайт на Panel. Координаты и выбор спрайта будет задаваться внутри класса. И всё. Вот какие идеи ? ))

Проблема в том, что секция Paint не часть класса PointAndFigure... может делегаты применить ? Нельзя применить просто так, без ухищрений, Graphics.DrawImage() в теле метода класса. Но понятно, что обойти это как-то можно ))



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.03.2014 в 21:40.
cdman вне форума Ответить с цитированием
Старый 04.03.2014, 13:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а передать ваш Graphics внутрь метода PaintP никак?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2014, 14:10   #3
cdman
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 32
По умолчанию

Спасибо Пепел Феникса! Получилось, но пока ещё не сделал. Вот допустим, мне надо рисовать на Panel из двух разных методов, а секция Paint одна) Какой тут выход ? Городить сложную функцию в секции Paint ?
cdman вне форума Ответить с цитированием
Старый 04.03.2014, 14:48   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

можно например хранить список объектов которые должны нарисаваться на панели, и их просто вызывать foreach циклом.

вариантов масса как можно сделать, можно вспомнить про то что на ивент можно назначить несколько обработчиков.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2014, 15:51   #5
cdman
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 32
По умолчанию

Несколько обработчиков это идея!

Вот весь пока класс, только экземпляр класса создаётся, а метода PrintSymbol в нём нет. Скажи пожалуйста, чего я забыл ?

Код:
public class PointAndFigure
{
    public PointAndFigure()
	{
        Bitmap O_Image = new Bitmap(@"E:\\DEALs\\DEALs\\DEALs\\Resources\\O.bmp");
        Bitmap X_Image = new Bitmap(@"E:\\DEALs\\DEALs\\DEALs\\Resources\\X.bmp");
        int SpriteSize;
        int Begin_Y;
    }

    public void PrintSymbol(Graphics Graphics, int R, string Symbol, int CoordX, int CoordY)
        {
        if (Symbol == "X" && R == 16) { Graphics.DrawImage(X_Image, CoordX * SpriteSize, CoordY * SpriteSize + Begin_Y); }
        if (Symbol == "O" && R == 16) { Graphics.DrawImage(O_Image, CoordX * SpriteSize, CoordY * SpriteSize + Begin_Y); }
        }
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 04.03.2014 в 21:40.
cdman вне форума Ответить с цитированием
Старый 04.03.2014, 16:02   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

применяйте тэг кода
не вижу как вы определили что метода там нет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2014, 16:30   #7
cdman
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 32
По умолчанию

Ставлю точку и нет ничего. Только стандартные всякие ... Equals

Код:
PointAndFigure PAF = new PointAndFigure();
PointAndFigure.

            PAF.
cdman вне форума Ответить с цитированием
Старый 04.03.2014, 16:47   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от cdman Посмотреть сообщение
Ставлю точку и нет ничего. Только стандартные всякие ... Equals

Код:
PointAndFigure PAF = new PointAndFigure();
PointAndFigure.

            PAF.
что за точка после PointAndFigure? вы же не статический метод вызываете.

Код:
PointAndFigure PAF = new PointAndFigure();
PAF.PrintSymbol(...)
должно работать, если ранее именно этот код выложен.

насчет вплывания подсказок, может кэш не перестроился, может еще что, от версии студии зависит.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2014, 17:03   #9
cdman
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 32
По умолчанию

PointAndFigure перенёс в отдельный файл и референс видимо надо ему)
cdman вне форума Ответить с цитированием
Старый 04.03.2014, 17:09   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от cdman Посмотреть сообщение
PointAndFigure перенёс в отдельный файл и референс видимо надо ему)
реверенс нужно если в отдельном проекте.
или полное имя если в ином неймспейсе(или юзинг)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат вектора методом шаблонного класса Dmitry333 Общие вопросы C/C++ 6 15.05.2013 11:22
Возврат вектора методом шаблонного класса Dmitry333 Общие вопросы C/C++ 3 14.05.2013 22:26
Инициализация матрицы методом класса Jugger Общие вопросы C/C++ 4 20.10.2011 20:43
Каким образом методом класса... FarmHend Помощь студентам 1 20.09.2011 07:03
Проблема с методом класса Ivan_32 Общие вопросы C/C++ 4 27.03.2009 10:43