Я хочу спросить о том, как оптимизировать перерисовку в Compact Framework? GetHashCode() не помог, потому что он всегда возвращает другой хэш-код.NETCF - Оптимизированная перекраска (onPaint)
Во всяком случае, у меня есть программа, которую вы можете перетащить и изменить размер объекта во время выполнения. Этот объект является прозрачным объектом и имеет PNG-изображение, которое также динамически изменяет размер относительно размера клиентского объекта.
Хотя я заметил (например, у меня есть 4 прозрачных объекта, и я перетаскиваю или изменяю их размер), все 4 из них запускают OnPaintBackground, даже если они не перемещаются. Еще один, когда я просто нажимаю на один объект. Он порождает триггер onPaintBacground(). Во всяком случае, у меня нет проблем при запуске этих событий.
Что мне нравится делать, это оптимизация, и это означает, что мне нужно только перекрасить объект, когда это необходимо.
Можете ли вы, ребята, дать предложения?
вот мой псевдо C# код
Bitmap _backBuff;
onResize() {
if(_backBuff != null) _backBuff.Dispose();
_backBuff = new Bitmap(ClientSize.Width, ClientSize.Height);
Invalidate();
}
onPaintBackground(e) /*have to use onPaintBackground because MSDN said it's faster*/ {
using(Graphics g = Graphics.FromImage(_backBuff)) {
g.Clear(Color.Black);
// draw background
....some interface calling here
....and paint the background
// draw alpha PNG
.. get hDc
.. paint PNG
.. release hDc
}
e.Graphics.DrawImage(_backBuff,0,0);
}
Спасибо заранее.
OnPaintBackground быстрее? Можете ли вы предоставить ссылку для этого заявления? Обычно, когда я рисую прозрачные вещи в WinCE, я переопределяю paintBackground и оставляю его _empty_, а затем нарисуем мои вещи в Paint. – Quibblesome