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

PictureBox (PNG). Как убрать лишние части фона

10.10.2019, 09:08. Показов 2056. Ответов 11

Студворк — интернет-сервис помощи студентам
Вообщем создаю игру по типу "Flappy bird", но только вместо птички у меня человек с ракетным ранцем, а вместо труб у меня маленькие самолётики, которые должен преодолевать.

ПРОБЛЕМА: Человек и самолётики - это Picture Box(Png). Модели сами объёмные, а картинки квадратные, поэтому при "столкновении", картинки пересекаются, но видно, что персонаж ещё в препятствия не влетел. Помогите есть какие-либо способы решить данную проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2019, 09:08
Ответы с готовыми решениями:

Как сделать так, чтобы у картинки в формате .png не было белого фона на форме
Как сделать так, чтобы у картинки в формате .png не было белого фона на форме(картинка изначально без фона)?Или чтобы она принимала в...

PictureBox слои изображений или как сделать закраску фона?
Проблема состоит в том, что мне надо сделать заливку фона. Я пробовал делать отдельную функцию(создавался прямоугольник и задавался как...

как убрать лишние поля для оформления и убрать регистрацию - VirtueMart (вроде ВМРЕ 1.0.15b) на Joomla 1.0
Здравствуйте! Скажите пожалуйста как в Старом VirtueMart (вроде ВМРЕ 1.0.15b) на Joomla 1.0 как убрать лишние поля для оформления и...

11
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 11
10.10.2019, 09:13  [ТС]
1 - объёмные модели
2 - ещё не врезались
(и ещё можете подсказать как сделать, чтобы правильно отображались label(ы) (locked не работает))
Миниатюры
PictureBox (PNG). Как убрать лишние части фона   PictureBox (PNG). Как убрать лишние части фона  
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
10.10.2019, 09:28
как костыльный вариант создать полигональную фигуру(в данном случае можно описать двумя квадратами) и сравнивать пересечение с ней, а не с picturebox.
Цитата Сообщение от vladepression Посмотреть сообщение
и ещё можете подсказать как сделать, чтобы правильно отображались label(ы)
А что с ними?
0
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 11
10.10.2019, 09:29  [ТС]
Посмотри на изображения, не знаю почему, но они смещаются
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
10.10.2019, 09:38
Цитата Сообщение от vladepression Посмотреть сообщение
Посмотри на изображения, не знаю почему, но они смещаются
Я думал это так и задумано. Но без кода сказать что-то конкретное трудно.
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
10.10.2019, 09:44
Цитата Сообщение от vladepression Посмотреть сообщение
картинки пересекаются, но видно, что персонаж ещё в препятствия не влетел.
есть одна идея.
На основании изображения создается маска объекта - двумерный массив булевых значений, значения true которого соответствуют непрозрачным пикселям.
Текущие координаты объектов будут определять смещения масок в глобальных координатах. Применяя это смещение, ищем, есть ли точки, в которых для каждой маски значение равно true.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
10.10.2019, 09:44
Может просто у лэйблов стоит автосайз и они просто растягиваются вправо на свою длину, ширина текста на картинках один фиг разная.
1
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 11
10.10.2019, 09:46  [ТС]
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WMPLib;
 
namespace RockketMan
{
    public partial class Form1 : Form
    {
       // bool jumping = false;
        int pipeSpeed = 5;
        int gravity = 5;
        int Inscore = 0;
        WMPLib.WindowsMediaPlayer player = new WMPLib.WindowsMediaPlayer();
        public Form1()
        {
            InitializeComponent();
            pictureBox1.Controls.Add(RocketMan);
            RocketMan.BackColor = Color.Transparent;
            pictureBox1.Controls.Add(Plane);
            Plane.BackColor = Color.Transparent;
            pictureBox1.Controls.Add(Plane2);
            Plane2.BackColor = Color.Transparent;
            pictureBox1.Controls.Add(ScoreText);
            ScoreText.BackColor = Color.Transparent;
            player.URL = "Das Mörtal - Hotline Miami II.mp3";
            player.controls.stop();
            EndText1.Text = "GAME OVER!";
            EndText2.Text = "Твой счёт:" + Inscore;
            gameDesigner.Text = "играл твоё имя ";
            EndText1.Visible = false;
            EndText2.Visible = false;
            gameDesigner.Visible = false;
        }
 
 
        private void gametimer_Tick(object sender, EventArgs e)
        {
            Plane.Left -= pipeSpeed;
            Plane2.Left -= pipeSpeed;
            //RocketMan.Top += 2;
            RocketMan.Top += gravity;
            ScoreText.Text = "" + Inscore;
            if (Plane2.Left < -80)
            {
                Plane2.Left = 1000;
                Inscore += 1;
            }
            else if (Plane.Left < -95)
            {
                Plane.Left = 1100;
                Inscore += 1;
            }
            if (RocketMan.Bounds.IntersectsWith(Plane2.Bounds))
            {
                EndGame();
            }
            else if (RocketMan.Bounds.IntersectsWith(Plane.Bounds))
            {
                EndGame();
            }
        }
 
        private void GameKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)
            {
                //jumping = true;
                gravity = -5;
            }
        }
 
        private void GameKeyUp(object sender, KeyEventArgs e)
        {
                //jumping = false;
                gravity = 5;
        }
        
 
        private void EndGame()
        {
            gametimer.Stop();
            EndText1.Visible = true;
            EndText2.Visible = true;
            gameDesigner.Visible = true;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            player.controls.play();
            gametimer.Enabled = true;
        }
        
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
                return cp;
            }
        }
 
        private void Form1_Activated(object sender, EventArgs e)
        {
            player.controls.play();
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            //RocketMan.Top += 4;
        }
 
        private void timer3_Tick(object sender, EventArgs e)
        {
            //RocketMan.Top += 6;
        }
 
    }
    }
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
10.10.2019, 09:47
Цитата Сообщение от alexus5 Посмотреть сообщение
есть одна идея.
Ну да это более правильный вариант, ещё можно не изобретать велосипед и все это слепить в юнити например.
0
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 11
10.10.2019, 10:13  [ТС]
Да, это круто. Только этот проект связан с учебной практикой и нам Unity запретили использовать)
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
10.10.2019, 15:46
vladepression, контролами не нужно делать.
Вам необходимо описать классами те обьекты, которые будут в игре, собрать их все в модели данных. Ну и потом все это отрисовать.
0
0 / 0 / 0
Регистрация: 10.06.2019
Сообщений: 11
14.10.2019, 15:19  [ТС]
Можешь пожалуйста пример скинуть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2019, 15:19
Помогаю со студенческими работами здесь

Как открыть картинку PNG и засунуть в PictureBox?
Мир Вам! Как открыть картинку PNG и засунуть в PictureBox? При обычном LoadPicture возникает ошибка ИнвалидИмаге. Помогите, может кто...

Как убрать лишние отступы
Здравствуйте, подскажите пожалуйста почему как убрать лишние отступы. Скриншот и архив прилагается! Напишите, пожалуйста, что я делаю не...

Как убрать лишние нули
сервер выдаёт значение загрузки в промежутке от 00100 до 10000 но это десятичное число как убрать лишние нули Пример: 05500 -&gt;...

Как убрать лишние папки
Разумеется речь идет о системных папках. Windows XP создает много лишних папок, которые не всегда нужны пользователю, а системе тем...

Как убрать лишние нули?
Как убрать лишние нули? void Gaus::outPut_AB() { for (int i = 0; i &lt; n; i++) { printf(&quot;\t&quot;); for (int j = 0; j &lt; n;...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru