2015-04-03 3 views
2

Я развиваю шахматную игру, и я создал шахматную доску, состоящую из 64 JPanel, и я также добавил к ним цвет фона и изображения.Изображение над графикой

У меня есть выделенный элемент (уникальный клеток, где пешки, что может двигаться). Это делается с графикой, как это:

Color myColour = new Color(112,158,219,180); 
Graphics g = this.getGraphics(); 
g.drawRect(row*75, col*75, 75, 75); 
g.setColor(myColour); 
g.fillRect(row*75, col*75, 75, 75); 

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

Как я могу это решить?

+0

Вы, должно быть, правильно добавили MouseMotionListener? Что вы добавили в свою функцию mouseReleased? – LittlePanda

+0

@LittlePanda Да, я добавил mousePressed (когда я нажимаю выше пешечного изображения, которое подсвечивает ячейка), mouseDragged и mouseReleased – splunk

+1

для лучшей помощи скорее опубликуйте SSCCE/MCVE, короткий, выполнимый, компилируемый, голосующий, чтобы закрыть – mKorbel

ответ

1

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

Лучшее решение - загрузить изображение PNG для пешки и установить эти проблемные пиксели, чтобы иметь альфа-значение 0, то есть полностью прозрачное. Или откройте свое изображение пешки в любом редакторе RGBA и установите пиксели, которые вы хотите быть прозрачными, как черные.

Смежные вопросы