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

Отображение шахматной фигуры без фона

09.12.2010, 23:48. Показов 3522. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не надо написать шахматы на С#.с формой сразу появилась проблема...я сделал фон формы как картинку шахматной доски ххх.bmp
кидаю на нее picturebox,вставляю в пикчер картинку фиругы ххх.GIF,пример картинки прикрепил,ну и кароч,он зону ВНЕ фигуры обозначает мне как backcolour,и я ее не могу убрать,чтобы етот backcolour не отображался/
но ето пол беды...2ая проблема что белый фон внутри картинки заполняеться АБСОЛЮТНО рандомно с фона формы....то есть заполняет картинкой доски,но постоянно случайно(
что сделать чтобы решить ети 2 проблемы?
в 1ой желательно чтобы backcolour 'а не стало,и отображалась доска...а во втотром чтобы доска не отображалась
картинку прроблемы кинул
Миниатюры
Отображение шахматной фигуры без фона  
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2010, 23:48
Ответы с готовыми решениями:

Класс шахматной фигуры
Хочу написать решалку шахматных задач (перебор), и для начала решил написать класс каждой фигуры. Оно того стоит, или я вообще не в ту...

Расстановки шахматной фигуры
Надо найти все расстановки 8 ладей так что бы они не били друг друга.Сделал программу она работает находит расстановки ,но есть огромная...

Положение фигуры на шахматной доске
Положение фигуры на шахматной доске (8 х 8) описывается двумя числами – номером горизонтали и номером вертикали. Ввести с клавиатуры...

8
 Аватар для Angelov
9 / 9 / 2
Регистрация: 02.10.2010
Сообщений: 51
10.12.2010, 01:09
из того, что я увидел, тебе нужно саму фигуру а точней её рисунок сделать в формате *.png и удалить в ней фон,тогда она будет безфоновой и тіы будешь видеть саму фигуру на доске.
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
10.12.2010, 06:19
можно так же сделать *.gif
0
 Аватар для Wild Wolf
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
10.12.2010, 06:52
Цитата Сообщение от Angelov Посмотреть сообщение
из того, что я увидел, тебе нужно саму фигуру а точней её рисунок сделать в формате *.png и удалить в ней фон,тогда она будет безфоновой и тіы будешь видеть саму фигуру на доске.
Цитата Сообщение от galexser Посмотреть сообщение
можно так же сделать *.gif
Не-а, так не получится . Я пробовала так делать - хоть у картинки и прозрачный фон (хоть gif, хоть png), а фон формы задан как BackgroundImage, но всё равно фон картинки выходит как BackgroundColor. Вот.

Я не знаю, как исправить эту проблему. Как вариант можно нарисовать 2 одинаковых фигуры, но у одной фон сделать как белые поля доски, и точно такую же но с тёмным фоном - для чёрных полей, а потом подменять их в зависимости на каком поле фигура находится.

Если кто то сможет подсказать, тоже буду благодарна.
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
10.12.2010, 08:58
1. Делать не с помощью контролов, а рисовать фигуры на поле непосредственно.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public sealed partial class UserInterface : Form
    {
        private readonly Image _image;
 
        public UserInterface()
        {
            InitializeComponent();
            pictureBox1.BackgroundImage = Image.FromFile("Img/bk.jpg");
            _image = Image.FromFile("Img/img.png");
        }
 
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawImage(_image, new Point(0, 0));
        }
    }
2. Создать 8х8 pictureBox'ов, и в них рисовать то, что нужно. Понадобятся картинки фигур как с белым, так и с чёрным фоном.
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
#region using
 
using System;
using System.Drawing;
using System.Windows.Forms;
 
#endregion
 
namespace WindowsFormsApplicationTest
{
    public sealed partial class UserInterface : Form
    {
        private readonly PictureBox[,] _pictureBoxs;
 
        public UserInterface()
        {
            InitializeComponent();
 
            // Размер клетки.
            const int SIZE = 50;
            _pictureBoxs = new PictureBox[8,8];
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    var pictureBox = new PictureBox();
                    pictureBox.Location = new Point(i*SIZE, j*SIZE);
                    pictureBox.Size = new Size(SIZE, SIZE);
                    // Цвет клетки.
                    pictureBox.BackColor = i%2 == 0
                                               ? (j%2 != 0 ? Color.White : Color.Black)
                                               : (j%2 == 0 ? Color.White : Color.Black);
                    // Имя клетки.
                    pictureBox.Name = (i + 1) + " " + (j + 1);
                    // Добавляем событие при нажатии.
                    pictureBox.Click += pictureBox_Click;
                    // Добавляем в список контролов формы.
                    Controls.Add(pictureBox);
                    _pictureBoxs[i, j] = pictureBox;
                }
            }
        }
 
        private void pictureBox_Click(object sender, EventArgs e)
        {
            MessageBox.Show(@"Клетка с номером " + ((PictureBox) sender).Name);
        }
    }
}
Изменять картинки можно или через массив, или по событию, обращаясь к ((PictureBox) sender).Image.
0
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 8
10.12.2010, 10:18  [ТС]
спасибо всем за ответы.
так получилось что вчера поздно с BackColour разобрался.картинки у меня без фона,и поставив в свойствах BackColour= Transparent (чисто методом перебора)получил решение проблемы с серым фоном.
НО,внутри фигура по прежнему разукрашивается в цвета доски!!!
заметил,что,если после запуска,развернуть форму на максимум,то фигура станет нормальногоо цвета,то есть не разукрашеная!а когда снова сворачиваю,о5 желто-черная!!!
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
10.12.2010, 21:25
almsivi99, можно как вариант делать фигуры в виде контролов непрямоугольной (произвольной формы). Для этого нужно использовать свойство Region контрола. Одно неудобство- придется попиксельно указать границы всех типов фигур
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2010, 13:00
almsivi99, я делал контролы все время, прорисовка вручную на форме это бред, в даному случае просто нужно установить AlphaBlend = true и переопредилить рисование контрола, что-бы фон был прозрачным вот и все.
0
0 / 0 / 0
Регистрация: 08.12.2010
Сообщений: 8
11.12.2010, 16:14  [ТС]
с фоном уже давно нет проблем=-)
а чтобы белый не закрашивался рендомными цветами,надо сделать его белым но небелым..то есть на 1 бит темнее белого.
почему такие проблемы с чисто белым я не знаю,но ето помогло.
просто заметил что черный не разукрашивает,решил попробовать с другими цветами,их тоже не меняет.
закрывайте тему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2010, 16:14
Помогаю со студенческими работами здесь

Вывод шахматной фигуры в консоль
Уважаемые форумчане, подскажите пожалуйста как вывести шахматную фигуру на экран знаю HEX. Когда я пишу: ... char t = '\x2659'; ...

определить положение шахматной фигуры
Даны координаты двух полей шахматной доски. Определить, может ли конь перейти за один ход с одного поля на другое.То же самое для ферзя.

Класс для моделирования шахматной фигуры
Разработайте класс для моделирования шахматной фигуры, позволяющий хранить вместе с экземпляром объекта его координаты на доске, цвет...

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

На шахматной доске 8х8 расположены три фигуры
Задача: //На шахматной доске 8х8 расположены три фигуры: ферзь, ладья и конь. //Требуется определить количество пустых полей...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru