Вращающаяся панель в C #

Я делаю игру на C #, это новый для меня язык.

Я хочу, чтобы панель вращалась, когда я удерживаю клавишу на клавиатуре. Когда ключ отпущен, панель должна перестать вращаться.

Я поискал в Интернете и нашел GDI +, но я не совсем понял его. Это веб-сайт: https://web.archive.org/web/20141229192143/http://bobpowell.net/drawing_an_image.aspx

Я читал о GDI +, но не знаю, как использовать его в моем случае, когда у меня уже есть панель в проекте и как ее добавить.

Это код для поворота, но когда я добавляю его в свою программу, все подчеркивается.

mx.Rotate(-30);
g.Transform = mx;
g.DrawImage(img,new Point(100,50));

Я действительно не понимаю, что означает строка mx.rotate, и как мне ее обновить, чтобы добиться вращения при нажатой клавише.

Кто-нибудь может сказать мне, что с ним не так?

Я использую Visual Studio 2008.


person Mr.Sofa    schedule 31.10.2011    source источник
comment
Я никогда не понимаю, как много людей, плохо знакомых с C #, в конечном итоге пытаются создать игру ... это все равно что пытаться упасть, прежде чем вы взойдете на гору   -  person musefan    schedule 31.10.2011
comment
@musefan, хотя я согласен с вашими мнениями, я подозреваю, что это как-то связано с привлекательностью игры в конце вашей тяжелой работы, а не с более приземленным приложением для телефона / адреса.   -  person Moo-Juice    schedule 31.10.2011
comment
@musefan Меня больше смущает тот факт, что они пытаются написать игру на winforms, но я полностью понимаю, что XNA Game Studio - еще один шаг вперед (create.msdn.com/en-us/resources/downloads).   -  person Zhaph - Ben Duguid    schedule 31.10.2011
comment
возможный дубликат Изучение C # и Windows Forms, еще одной книги ветка   -  person Hans Passant    schedule 31.10.2011
comment
@musefan - Я считаю, что игры - одна из лучших вещей, с которой можно начать изучать программирование. Они одновременно сложные и веселые. И вам не обязательно пытаться создать Crysis с первого раза. Даже простая игра в блэкджек в текстовом режиме весьма поучительна.   -  person Vilx-    schedule 31.10.2011


Ответы (2)


В вашем коде было несколько ошибок. Вот рабочий пример рисования изображения поворота из события Paint.

private void Form1_Paint(object sender, PaintEventArgs e) 
{
    var matrix = new Matrix();
    var image = Image.FromFile("c:\\img\\your-image.png");

    matrix.Rotate(-30);
    e.Graphics.Transform = matrix;
    e.Graphics.DrawImage(image, new Point(100, 100));
}
person Mickey    schedule 01.11.2011
comment
по-прежнему 1 ошибка: Ошибка 1 Не удалось найти тип или имя пространства имен «Матрица» (вам не хватает директивы using или ссылки на сборку?) - person Mr.Sofa; 02.11.2011
comment
Вам не хватает оператора using для System.Drawing.Drawing2D - person Mickey; 03.11.2011
comment
Спасибо :) Это сработало. Пожалуйста, оставьте эту тему открытой, потому что, возможно, мне все еще понадобится помощь. :) - person Mr.Sofa; 03.11.2011
comment
Вам следует принять ответ и открыть новый вопрос, если у вас есть другой. - person Mickey; 03.11.2011

Вам не хватает строки в исходном коде:

Matrix mx = new Matrix();

Добавьте это в свой код, и он должен работать. Это нарисует ваше изображение под углом, как в исходном документе. Если вы хотите, чтобы пользователь видел, как панель вращается, вам, вероятно, лучше всего использовать таймер для увеличения угла поворота и повторного рисования.

person Ade Stringer    schedule 31.10.2011
comment
Да, но я пытаюсь добавить изображение из файла: это код для получения изображения и его поворота. Но у меня все подчеркнуто и с ошибками. Вот код с ошибками: norefer4.google.com -fTuFv3ByByY / TrAFhonVAxI / AAAAAAAACAQ / - person Mr.Sofa; 01.11.2011
comment
Как сказал @Mickey, вам не хватало объявления пространства имен. Если у вас есть Visual Studio, в большинстве случаев вы можете просто навести курсор на неразрешенный тип и нажать Shift-Alt-F10 - вы получите приглашение со списком любых подходящих пространств имен, если они есть из вашего проекта. актуальный список литературы. Если вы предпочитаете мыши клавиатуре, щелкните появившийся маленький синий прямоугольник, и вы получите те же параметры. - person Ade Stringer; 03.11.2011