jamshid_m Ответов: 2

Как я могу обновить изображения в элемент управления PictureBox без мелькать


Привет,

Я хочу перерисовывать изображение picturebox в потоке с интервалом 50 мс.
Когда я снимите флажок элемент управления PictureBox прежде, чем перерисовать, он моргает.
И когда я не очищаюсь, старый образ тоже остается!
(На самом деле у меня есть две картинки, накладывающиеся друг на друга (фон картинки прозрачный), и я хочу повернуть второе изображение под углом к первому).
Моя цель-создать экран радара как настоящий радар.
Я видел здесь проект, но хотел сделать свой собственный.

Не могли бы вы, пожалуйста, сказать мне, что делать??
Должен ли я использовать другой элемент управления? Какой?

Спасибо.

Что я уже пробовал:

Picturebox, Панель Управления,
Графика.Clear (), Панель.Признать Недействительными(), Панели.Освежить(),

2 Ответов

Рейтинг:
2

JayantaChatterjee

Вы можете использовать

Control.DoubleBuffered
чтобы уменьшить мерцание..

для дополнительной информации :-
Контроль.Свойство DoubleBuffered (System.Окна.Формы)[^]


Рейтинг:
0

Ralf Meier

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


jamshid_m

В .NET нет такого компонента, который мог бы эффективно показывать или рисовать изображение!?
Я попробовал освежить панель. Я не могу перекрасить вращающуюся картинку старой области.

Ralf Meier

Нет... вы должны разработать свой собственный индивидуальный контроль, который имеет поведение, которое вы хотите иметь.
Но я подумал, что у вас все-таки развилось что-то подобное и вы застреваете в особой точке.
Вы знакомы с управлением-развитием ...?

jamshid_m

Привет Ральф Мейер,
Спасибо за ваш ответ.
Прямо сейчас я изучаю WPF, я где-то видел, что в WPF я могу это сделать.
Разве я не прав?

Ralf Meier

Я не знаю, потому что в основном работаю с Windows-формами.
Но... Я не думаю, что стандарт-контроль вам поможет ... Я думаю, что единственный способ-это создать свой собственный контроль, который делает именно то, что вы хотите.
Если бы еще предложение из решения 1 решило вашу проблему-я думаю, что это не так ...

Что ты хочешь делать теперь ?

jamshid_m

Я мало что знаю о WPF.
Я читал, что в WPF легко работать с картинками. Поэтому я хочу делать свою работу в WPF и вызывать ее в Windows-форме.