2015-10-04 2 views
-1

Я использую onPaint с Invalidate() на timer_tick для repaints, как я могу нарисовать фон, который нельзя перекрашивать остальным?C# Использование onPaint с таймером

Я пробовал использовать pictureBoxes, но они нарисованы OVER onPaint, также я не могу использовать прозрачные изображения.

+0

Вы не ввели код? – Cjen1

+0

Почему вы хотите, чтобы фон не был нарисован? Он будет уничтожен, когда система нуждается в перекраске! - Вы можете установить BackgroundImage для неизменных фонов, но .. - Также: совершенно неясно, на что вы нацеливаетесь, когда говорите о прозрачности. Пожалуйста, объясните себе намного яснее, иначе мы не сможем помочь или посоветовать ..! – TaW

+0

Поскольку onPaint обновляется каждые 10 мс, я надеялся, что есть способ нарисовать определенные вещи (например, фон) только один раз, чтобы уменьшить нагрузку. – SJ19

ответ

0

Литература Windows Forms довольно ужасна для таких вещей. Поскольку ни один из данных дисплея не буферизирован, каждая перерисовка (если она достаточно медленная) является видимой и кричащей. Прозрачные изображения вообще не работают так, как вы хотите, чтобы они делали. Я точно не знаю, чего вы пытаетесь достичь в конце концов, но если вы просто играете с графикой, я бы предложил вам использовать что-то вроде Win2D API. API Win2D очень похож на событие onPaint с точки зрения использования.

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

+0

Вы всегда можете установить doublebuffered в true, но, не зная намного больше, любые советы кажутся бесполезными – TaW

+0

@georch Как сказал TaW, я установил doublebuffered в true, и я должен сказать, что это довольно свободно. Есть ли у Monogame какие-либо функции для этого? – SJ19

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