Прозрачные коробки с картинками мерцают при перемещении мышью - PullRequest
0 голосов
/ 30 июля 2010

Я сделал карточную игру, построенную из картинных коробок. Пустые места, в которые можно положить карточку, - это пустое графическое поле с прозрачным фоном и 3D-рамкой. И тогда у меня есть текущая карта, которая также является картинкой, которая перемещается событием MouseMove.

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

Есть ли обходной путь для этого? Я пробовал DoubleBuffered, но безуспешно. Спасибо!

Ответы [ 2 ]

1 голос
/ 30 июля 2010

Из вашего описания не ясно, как выглядит ваш код.Но решите следующую проблему после того, как исправите ее: эффекты прозрачности для элементов управления не работают в Windows Forms, когда элементы управления перекрываются.Вы увидите фон родителя, вы не увидите содержимое графического поля, которое перекрывается вашей движущейся картой.

Это не проблема с WPF, у него совсем другая модель рендеринга,Но до тех пор, пока вы хотите придерживаться Windows Forms, вам нужно заставить это работать с событием OnPaint () формы.Нарисуйте карточный стол, затем запас, затем нарисуйте движущуюся карту.Когда карта перемещается, вызовите Invalidate (), чтобы перекрасить форму, теперь карта отображается в новом положении.

Другими словами, не устраняйте свою текущую проблему.Перепроектируйте вашу программу.

0 голосов
/ 30 июля 2010

Вы можете позвонить

Application.DoEvents();

в pictureBox.Move событиях;поэтому все фоновые рисунки будут перерисованы.

...