Возможно ли заполнить объект области в GDI изображением?
Регион не может быть заполнен, он не хранит пиксели. То, что вы почти наверняка ищете, это свойство Graphics.Clip. Присвойте регион ему и нарисуйте изображение, оно будет обрезано областью.
Вы можете читать и устанавливать одиночные пиксели в графическом объекте (а не в растровое изображение)?
Нет, объект Graphics не сохраняет ни одного пикселя, он отслеживает только то, куда вы рисуете. Говорит «контекст устройства» в Windows. Каким может быть растровое изображение, экран, принтер, метафайл. Не все из этих контекстов устройства позволяют вам читать пиксель после рисования (не для принтера, а не для метафайла, например). Но без проблем, конечно, когда вы рисуете растровое изображение.
У вас есть какие-либо советы для увеличения общей производительности в GDI?
Существует один решающий вопрос.NET делает его очень легко упускать. Формат пикселей растрового изображения, который вы рисуете, является супер-пуперным. Самая дорогая вещь, которую вы когда-либо делаете с растровым изображением, - копирование, от памяти процессора до памяти видеоадаптера. Эта копия выполняется только в том случае, если формат пикселей в точности соответствует формату, который использует видеоадаптер. На всех современных машинах это PixelFormat.Format32bppPArgb. Разница огромна, это десять раз быстрее, чем все остальные.
Это слишком широкое для переполнения стека. Для начала задайте один вопрос на вопрос. Ваши первые два в порядке (любые образцы кода, которые у вас в настоящее время есть, будут приятными). Третий * определенно * слишком широк. – BradleyDotNET