IVsGradient.DrawGradient(IntPtr, IntPtr, RECT[], RECT[]) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Рисует заданный градиент в указанном месте.
public:
int DrawGradient(IntPtr hwnd, IntPtr hdc, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ gradientRect, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ sliceRect);
public int DrawGradient (IntPtr hwnd, IntPtr hdc, Microsoft.VisualStudio.OLE.Interop.RECT[] gradientRect, Microsoft.VisualStudio.OLE.Interop.RECT[] sliceRect);
abstract member DrawGradient : nativeint * nativeint * Microsoft.VisualStudio.OLE.Interop.RECT[] * Microsoft.VisualStudio.OLE.Interop.RECT[] -> int
Public Function DrawGradient (hwnd As IntPtr, hdc As IntPtr, gradientRect As RECT(), sliceRect As RECT()) As Integer
Параметры
- hwnd
- IntPtr
[in] Дескриптор окна, содержащего область для закрашивания градиентом.
- hdc
- IntPtr
[in] Дескриптор контекста устройства, используемого в рисования градиента.
- gradientRect
- RECT[]
[in] Прямоугольник с градиентной заливкой или содержащая его область, определяющая полный экстент и геометрию, в которых удалось применить градиент.
- sliceRect
- RECT[]
[in] Прямоугольник фрагмента, определяющий область, которая фактически закрашивается градиентом.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.
Комментарии
Подпись COM
Из vsshell80. IDL:
HRESULT IVsGradient::DrawGradient(
[in] HWND hwnd,
[in] HDC hdc,
[in] RECT * gradientRect,
[in] RECT * sliceRect
);
gradientRectИ, и sliceRect должны быть определены в системе координат, определяемой окном, заданным в маркере, hwnd .
Пакет SDK для среды поддерживает два типа градиентов: статический и не статический.
Сведения о том, какие градиенты являются статическими, а какие — не статическими, и их последствиях см. в разделе __GRADIENTTYPE .
Для статических градиентов среда сохраняет постоянное определение прямоугольника градиента, а gradientRect параметр игнорируется.
Прямоугольник среза, заданный sliceRect параметром, всегда должен содержаться в прямоугольнике, определяемом прямоугольником, заданным gradientRect параметром.
Две прямоугольные области gradientRect и sliceRect определяют, как DrawGradient метод рисует градиент в элементе пользовательского интерфейса.
gradientRectПрямоугольник называется прямоугольником градиента или содержит область. Он задает полный экстент и расположение, по которым может быть применен градиент.
sliceRectПрямоугольник называется прямоугольником среза, а спецификация указывает область, где на самом деле закрашивается градиент.
Маскирование градиентов может быть выполнено с помощью градиента и прямоугольников срезов разного размера, где прямоугольник среза содержится в прямоугольнике градиента. В этом случае только часть элемента пользовательского интерфейса закрашивается градиентом, но шаблон градиента сохраняется так, как если бы был окрашен весь прямоугольник градиента.
Например, при рисовании широкой рамки размером 10 пикселей в 100 на уровне 100 пикселей можно сделать
определение прямоугольника градиента с помощью
RECTструктуры с углами с закруглениями в левом верхнем углу в (0, 0) и правом нижнем углу в (100 100).Определение расширенных структур срезов 4 10 пикселей
RECT,верхний левый угол в (0, 0) и правый нижний угол в (100, 10)
верхний левый угол в (0, 0) и правый нижний угол в (10 100)
верхний левый угол в (90, 0) и правый нижний угол в (100 100)
верхний левый угол в (0, 90) и правый нижний угол в (100, 10)
вызов
IVsGradient.DrawGradientчетыре раза, один раз для каждого прямоугольника среза и всегда использует один и тот же прямоугольник градиента.
Кроме того, прямоугольное Рисование может оказаться неудовлетворительным в определенных обстоятельствах, например при рисовании элемента управления со скругленными углами, с помощью вкладки акула-FIN или непрямоугольной области, которая не просто обрезается или замаскирована.
В таких случаях пакеты VSPackage должны создать кисть для рисования заданного градиента на основе массива или вектора цветов, возвращаемых GetGradientVector методом.
Например, сложные вкладки файлов можно изобразить, создав три компонента для вкладки — «FIN», «Текстовая область» и «конец», где компоненты будут прорисованы посредством замены цвета и растяжения. Каждый пиксел определенного цвета заменяется элементом массива, возвращаемым GetGradientVector соответствующим положением на горизонтальной оси.
Дополнительные сведения см. в разделе как использовать поддержку градиента в Visual Studio.