Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 20.05.2012
Сообщений: 204

Как в данном коде поменять картинку на свою

05.06.2012, 16:20. Показов 1217. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется вот такой код:
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
64
65
66
67
68
69
70
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 pacman
{
    public partial class Form1 : Form
    {
        Graphics _gr;
        BufferedGraphics _bufferedGraphics;
        BufferedGraphicsContext _bufferedGraphicsContext;
 
        Rectangle _rect = new Rectangle(180, 180, 10, 10);
        Pen _pen = new Pen(Color.Green, 10);
 
        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
 
            KeyDown += new KeyEventHandler(Form1_KeyDown);
            Paint += new PaintEventHandler(Form1_Paint);
            SizeChanged += new EventHandler(Form1_SizeChanged);
 
            _bufferedGraphicsContext = BufferedGraphicsManager.Current;
            InitializeGraphics();
        }
 
        void Form1_SizeChanged(object sender, EventArgs e)
        {
            InitializeGraphics();
        }
 
        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
                _rect.Location = new Point(_rect.Left - 5, _rect.Top);
            if (e.KeyCode == Keys.Right)
                _rect.Location = new Point(_rect.Left + 5, _rect.Top);
            if (e.KeyCode == Keys.Up)
                _rect.Location = new Point(_rect.Left, _rect.Top - 5);
            if (e.KeyCode == Keys.Down)
                _rect.Location = new Point(_rect.Left, _rect.Top + 5);
            Refresh();
        }
 
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawToBuffer();
        }
 
        private void DrawToBuffer()
        {
            _bufferedGraphics.Graphics.Clear(BackColor);
            _bufferedGraphics.Graphics.DrawEllipse(_pen, _rect);
            _bufferedGraphics.Render();
        }
 
        private void InitializeGraphics()
        {
            _gr = CreateGraphics();
            _bufferedGraphics = _bufferedGraphicsContext.Allocate(_gr, ClientRectangle);
        }
    }
}
Появляется шарик и передвигается потому что там стоит Элипс, нужно сделать чтоб загружалась своя картинка как это осуществить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2012, 16:20
Ответы с готовыми решениями:

Как избавиться от флагов в данном коде?
Есть функция с флагами, которая не понятна для меня. Хотелось бы как-то избавиться от них. private ArrayList producingSymb(){ ...

Как работает return в данном коде?
не могу понять, что означает return (char) 0; в приведенном ниже коде, заранее всем спасибо) public char Pop() { ...

Как в данном коде не выйти за границы массива?
arr ругается на: if (array==1&&j< n - 1) Добавлено через 24 секунды как не выйти за границы массива?

9
162 / 162 / 42
Регистрация: 29.05.2010
Сообщений: 435
05.06.2012, 16:54
Graphics.DrawImage
0
1 / 1 / 0
Регистрация: 20.05.2012
Сообщений: 204
05.06.2012, 17:10  [ТС]
я пробовал по их примеру не получилось
0
162 / 162 / 42
Регистрация: 29.05.2010
Сообщений: 435
05.06.2012, 17:15
Пишите, что именно не получается.Код, ошибки - ?
0
1 / 1 / 0
Регистрация: 20.05.2012
Сообщений: 204
05.06.2012, 17:17  [ТС]
Как я понимаю вот это
C#
1
_bufferedGraphics.Graphics.DrawEllipse(_pen, _rect);
Здесь отвечает за рисунок(картинку). я не понимаю как вставить туда свою
0
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
05.06.2012, 17:39
DrawEllipse рисует контур отвала кружка в твоем случае
а закрашен он потому что _pen толщину 10 имеет в определении
тебе надо FillEllipse c кистью картинкой использовать или
DrawImage как предлагали
0
1 / 1 / 0
Регистрация: 20.05.2012
Сообщений: 204
05.06.2012, 17:41  [ТС]
ну да я хотел использовать DrawImage я понять просто не могу
0
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
05.06.2012, 17:45
C#
1
            _bufferedGraphics.Graphics.DrawImage(_img, _rect);
В поле класса Form создай Image _img;
А в конструктор класса _img = Image.FromFile(@"путь к файлу картинке");
эту заморочку надо сделать чтоб 10 раз не создавать картинку

П.С.
А картинку лучше PNG чтоб фон прозрачный был и не мучиться с регионами)))
1
1 / 1 / 0
Регистрация: 20.05.2012
Сообщений: 204
05.06.2012, 18:19  [ТС]
все сделал ни ошибок ничего нету но картинки при запуске нету ничего не происходит вот код
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
64
65
66
67
68
69
70
71
72
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 pacman
{
    public partial class Form1 : Form
    {
        Image _img;
        Graphics _gr;
        BufferedGraphics _bufferedGraphics;
        BufferedGraphicsContext _bufferedGraphicsContext;
 
        Rectangle _rect = new Rectangle(180, 180, 10, 10);
        Pen _pen = new Pen(Color.Green, 10);
 
        public Form1()
        {
            _img = Image.FromFile(@"C:\Tank.png");
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
 
            KeyDown += new KeyEventHandler(Form1_KeyDown);
            Paint += new PaintEventHandler(Form1_Paint);
            SizeChanged += new EventHandler(Form1_SizeChanged);
 
            _bufferedGraphicsContext = BufferedGraphicsManager.Current;
            InitializeGraphics();
        }
 
        void Form1_SizeChanged(object sender, EventArgs e)
        {
            InitializeGraphics();
        }
 
        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Left)
                _rect.Location = new Point(_rect.Left - 5, _rect.Top);
            if (e.KeyCode == Keys.Right)
                _rect.Location = new Point(_rect.Left + 5, _rect.Top);
            if (e.KeyCode == Keys.Up)
                _rect.Location = new Point(_rect.Left, _rect.Top - 5);
            if (e.KeyCode == Keys.Down)
                _rect.Location = new Point(_rect.Left, _rect.Top + 5);
            Refresh();
        }
 
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            DrawToBuffer();
        }
 
        private void DrawToBuffer()
        {
            _bufferedGraphics.Graphics.Clear(BackColor);
            _bufferedGraphics.Render();
            _bufferedGraphics.Graphics.DrawImage(_img, _rect);
        }
 
        private void InitializeGraphics()
        {
            _gr = CreateGraphics();
            _bufferedGraphics = _bufferedGraphicsContext.Allocate(_gr, ClientRectangle);
        }
    }
}
Добавлено через 19 минут
все сделал

Добавлено через 2 минуты
сразу же появися еще 1 вопрос, при движении влево вправо как сделать чтоб менялась картина на танчик повернутый допустим налево
0
101 / 101 / 15
Регистрация: 23.05.2012
Сообщений: 260
05.06.2012, 20:14
C#
1
2
3
4
5
if (e.KeyCode == Keys.Left)
{
      _rect.Location = new Point(_rect.Left - 5, _rect.Top);
      _img=_imgLeft;
}...
Ну и разумеется создать 4 картинки и 4 переменных по сторонам объявить и загрузить как раньше

А render всегда последний должен быть)))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2012, 20:14
Помогаю со студенческими работами здесь

Инкремент. Как идет пересчет в данном коде
Собственно учу по Шилду, немного не пойму как идет пересчет в данном коде using System; class ChkNum { public bool...

Как повесить свою картинку на кнопочку?
Здравствуйте. Я создал Макрос сохранил его как xla определил события для инсталляции и деинсталляции. При инсталляции создаю новый тулбар...

Как вставить свою картинку в шаблон сайта?
Здравствуйте! Я новичок на форуме и, с недавних пор, начал изучать веб-разработку, поэтому прошу не кидаться кирпичами, если, что-то...

Как поставить на кнопку bitbtn свою картинку?
он ставит лишь те, что сохранены в самом борланде, а мне нужно свою поставить

Как забрать картинку с базы данных в свою программу?
как забрать картинку с базы данных в свою программу? уже неделю ищу информации, ничего дельного не нашел


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru